当前位置: 首页>>代码示例>>PHP>>正文


PHP stream_bucket_make_writeable函数代码示例

本文整理汇总了PHP中stream_bucket_make_writeable函数的典型用法代码示例。如果您正苦于以下问题:PHP stream_bucket_make_writeable函数的具体用法?PHP stream_bucket_make_writeable怎么用?PHP stream_bucket_make_writeable使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了stream_bucket_make_writeable函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: filter

 public function filter($in, $out, &$consumed, $closing)
 {
     while ($bucket = stream_bucket_make_writeable($in)) {
         if (!empty($this->_previous)) {
             $bucket->data = $this->_previous . $bucket->data;
             $this->_previous = '';
         }
         if (!feof($this->stream) && preg_match('/(%[12]\\$|%[12]|%)$/', $bucket->data)) {
             $this->_previous .= $bucket->data;
             return PSFS_FEED_ME;
         }
         $consumed += $bucket->datalen;
         if (preg_match('/%([12])\\$s/', $bucket->data, $matches)) {
             if ($matches[1] == '1') {
                 $bucket->data = preg_replace('/%1\\$s/', $this->_sender, $bucket->data);
             } else {
                 $bucket->data = preg_replace('/%2\\$s/', $this->_recipient, $bucket->data);
             }
         }
         $bucket->datalen = strlen($bucket->data);
         stream_bucket_append($out, $bucket);
     }
     if (!empty($this->_previous)) {
         if ($closing) {
             $bucket = stream_bucket_new($this->stream, $this->_previous);
             $bucket->data = $this->_previous;
             $consumed += strlen($this->_previous);
             $this->_previous = '';
             stream_bucket_append($out, $bucket);
         }
     }
     return PSFS_PASS_ON;
 }
开发者ID:raz0rsdge,项目名称:horde,代码行数:33,代码来源:AddressFilter.php

示例2: filter

 /**
  * Filter some data.
  *
  * @param resource $in       Read from this input stream
  * @param resource $out      Write to this output stream
  * @param int      $consumed Count of bytes processed
  * @param bool     $closing  Is the input about to end?
  *
  * @return int PSFS_PASS_ON / PSFS_FEED_ME / PSFS_ERR_FATAL
  */
 public function filter($in, $out, &$consumed, $closing) : int
 {
     $return = PSFS_FEED_ME;
     // While input data is available, continue to read it.
     while ($bucket_in = stream_bucket_make_writeable($in)) {
         $this->data .= $bucket_in->data;
         $consumed += $bucket_in->datalen;
         // While we have complete GEDCOM records, process them.
         while (preg_match('/(.*?[\\r\\n]\\s*)(0.*)/s', $this->data, $match) === 1) {
             list(, $data, $this->data) = $match;
             // Send this record output.
             $data = $this->filterData($data);
             $bucket_out = stream_bucket_new($this->stream, $data);
             $return = PSFS_PASS_ON;
             stream_bucket_append($out, $bucket_out);
         }
     }
     // Process the final record.
     if ($closing && $this->data !== '') {
         $data = $this->filterData($this->data);
         $bucket_out = stream_bucket_new($this->stream, $data);
         $return = PSFS_PASS_ON;
         stream_bucket_append($out, $bucket_out);
     }
     return $return;
 }
开发者ID:fisharebest,项目名称:lib-gedcom,代码行数:36,代码来源:AbstractGedcomFilter.php

示例3: filter

 /**
  * Traffic shaping.
  *
  * @param resource $in       The input stream.
  * @param resource $out      The ouput stream.
  * @param int      $consumed The amount of consumed bytes.
  * @param bool     $closing  If the stream is closing.
  *
  * @return int The processing state.
  *
  * @SuppressWarnings("unused")
  * @SuppressWarnings("short")
  */
 public function filter($in, $out, &$consumed, $closing)
 {
     try {
         while ($bucket = stream_bucket_make_writeable($in)) {
             $chunks = str_split($bucket->data, $this->tokenBucket->getCapacity());
             foreach ($chunks as $chunk) {
                 $tokens = strlen($chunk);
                 $this->tokenConsumer->consume($tokens);
                 $consumed += $tokens;
             }
             stream_bucket_append($out, $bucket);
         }
         return PSFS_PASS_ON;
     } catch (StorageException $e) {
         trigger_error($e->getMessage(), E_USER_ERROR);
         return PSFS_ERR_FATAL;
     } catch (\LengthException $e) {
         /*
          * This case would be a logic error, as the stream chunk is already
          * splitted to the bucket's capacity.
          */
         trigger_error($e->getMessage(), E_USER_ERROR);
         return PSFS_ERR_FATAL;
     }
 }
开发者ID:samcrosoft,项目名称:bandwidth-throttle,代码行数:38,代码来源:TokenBucketFilter.php

示例4: filter

 /**
  * The main filter method.
  * Implemented according to \php_user_filter class. Will loop over all stream buckets, buffer them and perform
  * the needed actions.
  *
  * @param resource $in       Incoming bucket brigade we need to filter
  * @param resource $out      Outgoing bucket brigade with already filtered content
  * @param integer  $consumed The count of altered characters as buckets pass the filter
  * @param boolean  $closing  Is the stream about to close?
  *
  * @throws \TechDivision\PBC\Exceptions\GeneratorException
  *
  * @return integer
  *
  * @link http://www.php.net/manual/en/php-user-filter.filter.php
  */
 public function filter($in, $out, &$consumed, $closing)
 {
     // Get our buckets from the stream
     while ($bucket = stream_bucket_make_writeable($in)) {
         // Get the tokens
         $tokens = token_get_all($bucket->data);
         // Go through the tokens and check what we found
         $tokensCount = count($tokens);
         for ($i = 0; $i < $tokensCount; $i++) {
             // Did we find a function? If so check if we know that thing and insert the code of its preconditions.
             if (is_array($tokens[$i]) && $tokens[$i][0] === T_FUNCTION && is_array($tokens[$i + 2])) {
                 // Get the name of the function
                 $functionName = $tokens[$i + 2][1];
                 // Check if we got the function in our list, if not continue
                 $functionDefinition = $this->params->get($functionName);
                 if (!$functionDefinition instanceof FunctionDefinition) {
                     continue;
                 } else {
                     // Get the code for the assertions
                     $code = $this->generateCode($functionDefinition->getAllPreconditions());
                     // Insert the code
                     $bucket->data = str_replace(PBC_PRECONDITION_PLACEHOLDER . $functionDefinition->getName() . PBC_PLACEHOLDER_CLOSE, $code, $bucket->data);
                     // "Destroy" code and function definition
                     $code = null;
                     $functionDefinition = null;
                 }
             }
         }
         // Tell them how much we already processed, and stuff it back into the output
         $consumed += $bucket->datalen;
         stream_bucket_append($out, $bucket);
     }
     return PSFS_PASS_ON;
 }
开发者ID:techdivision,项目名称:php-by-contract,代码行数:50,代码来源:PreconditionFilter.php

示例5: filter

 function filter($in, $out, &$consumed, $closing)
 {
     while ($bucket = stream_bucket_make_writeable($in)) {
         $this->data .= $bucket->data;
         $this->bucket = $bucket;
         $consumed = 0;
     }
     if ($closing) {
         $consumed += strlen($this->data);
         if (isset($this->bucket)) {
             $bucket = $this->bucket;
         } else {
             $bucket = stream_bucket_new($this->stream, '');
         }
         $f = self::$registry[get_class($this)];
         AbstractStreamProcessor__lazyUriResolver::bind($this->stream, $f->uri);
         $bucket->data = $f->process($this->data);
         $bucket->datalen = strlen($bucket->data);
         stream_bucket_append($out, $bucket);
         $this->bucket = null;
         $this->data = '';
         return PSFS_PASS_ON;
     }
     return PSFS_FEED_ME;
 }
开发者ID:nicolas-grekas,项目名称:Patchwork,代码行数:25,代码来源:AbstractStreamProcessor.php

示例6: filter

 /**
  * Filter Stream Through Buckets
  *
  * @param resource $in userfilter.bucket brigade
  *                         pointer to a group of buckets objects containing the data to be filtered
  * @param resource $out userfilter.bucket brigade
  *                         pointer to another group of buckets for storing the converted data
  * @param int $consumed counter passed by reference that must be incremented by the length
  *                         of converted data
  * @param boolean $closing flag that is set to TRUE if we are in the last cycle and the stream is
  *                           about to close
  * @return int
  */
 function filter($in, $out, &$consumed, $closing)
 {
     // $in and $out are opaque "bucket brigade" objects which consist of a
     // sequence of opaque "buckets", which contain the actual stream data.
     // The only way to use these objects is the stream_bucket_* functions.
     // Unfortunately, there doesn't seem to be any way to access a bucket
     // without turning it into a string using stream_bucket_make_writeable(),
     // even if you want to pass the bucket along unmodified.
     // Each call to this pops a bucket from the bucket brigade and
     // converts it into an object with two properties: datalen and data.
     // This same object interface is accepted by stream_bucket_append().
     while ($bucket = stream_bucket_make_writeable($in)) {
         $outbuffer = '';
         $offset = 0;
         // Loop through the string.  For efficiency, we don't advance a character
         // at a time but try to zoom ahead to where we think the next chunk
         // boundary should be.
         // Since the stream filter divides the data into buckets arbitrarily,
         // we have to maintain state ($this->chunkremaining) across filter() calls.
         while ($offset < $bucket->datalen) {
             if ($this->chunkremaining === 0) {
                 // start of new chunk, or the start of the transfer
                 $firstline = strpos($bucket->data, "\r\n", $offset);
                 $chunkline = substr($bucket->data, $offset, $firstline - $offset);
                 $chunklen = current(explode(';', $chunkline, 2));
                 // ignore MIME-like extensions
                 $chunklen = trim($chunklen);
                 if (!ctype_xdigit($chunklen)) {
                     // There should have been a chunk length specifier here, but since
                     // there are non-hex digits something must have gone wrong.
                     return PSFS_ERR_FATAL;
                 }
                 $this->chunkremaining = hexdec($chunklen);
                 // $firstline already includes $offset in it
                 $offset = $firstline + 2;
                 // +2 is CRLF
                 if ($this->chunkremaining === 0) {
                     //end of the transfer
                     break;
                 }
                 // ignore possible trailing headers
             }
             // get as much data as available in a single go...
             $nibble = substr($bucket->data, $offset, $this->chunkremaining);
             $nibblesize = strlen($nibble);
             $offset += $nibblesize;
             // ...but recognize we may not have got all of it
             if ($nibblesize === $this->chunkremaining) {
                 $offset += 2;
             }
             // skip over trailing CRLF
             $this->chunkremaining -= $nibblesize;
             $outbuffer .= $nibble;
         }
         $consumed += $bucket->datalen;
         $bucket->data = $outbuffer;
         stream_bucket_append($out, $bucket);
     }
     return PSFS_PASS_ON;
 }
开发者ID:phPoirot,项目名称:Connection,代码行数:73,代码来源:DechunkFilter.php

示例7: filter

 /**
  * The main filter method.
  * Implemented according to \php_user_filter class. Will loop over all stream buckets, buffer them and perform
  * the needed actions.
  *
  * @param resource $in       Incoming bucket brigade we need to filter
  * @param resource $out      Outgoing bucket brigade with already filtered content
  * @param integer  $consumed The count of altered characters as buckets pass the filter
  * @param boolean  $closing  Is the stream about to close?
  *
  * @throws \Exception
  * @throws \PHPParser_Error
  *
  * @return integer
  *
  * @link http://www.php.net/manual/en/php-user-filter.filter.php
  *
  * TODO The buffering does not work that well, maybe we should implement universal buffering within parent class!
  */
 public function filter($in, $out, &$consumed, $closing)
 {
     // Get our buckets from the stream
     $buffer = '';
     while ($bucket = stream_bucket_make_writeable($in)) {
         $buffer .= $bucket->data;
         // Tell them how much we already processed, and stuff it back into the output
         $consumed += $bucket->datalen;
         // Save a bucket for later reuse
         $bigBucket = $bucket;
     }
     // Beautify all the buckets!
     $parser = new \PHPParser_Parser(new \PHPParser_Lexer());
     $prettyPrinter = new \PHPParser_PrettyPrinter_Default();
     try {
         // parse
         $stmts = $parser->parse($buffer);
         $data = '<?php ' . $prettyPrinter->prettyPrint($stmts);
     } catch (PHPParser_Error $e) {
         throw $e;
     }
     // Refill the bucket with the beautified data
     // Do not forget to set the length!
     $bigBucket->data = $data;
     $bigBucket->datalen = strlen($data);
     // Only append our big bucket
     stream_bucket_append($out, $bigBucket);
     return PSFS_PASS_ON;
 }
开发者ID:techdivision,项目名称:php-by-contract,代码行数:48,代码来源:BeautifyFilter.php

示例8: filter

 public function filter($in, $out, &$consumed, $closing) : int
 {
     while ($bucket = stream_bucket_make_writeable($in)) {
         stream_bucket_append($out, stream_bucket_new($this->stream, str_rot13($bucket->data)));
     }
     return \PSFS_PASS_ON;
 }
开发者ID:jeremyadoux,项目名称:hhvm,代码行数:7,代码来源:default-filters.php

示例9: filter

 /**
  * The main filter method.
  * Implemented according to \php_user_filter class. Will loop over all stream buckets, buffer them and perform
  * the needed actions.
  *
  * @param resource $in       Incoming bucket brigade we need to filter
  * @param resource $out      Outgoing bucket brigade with already filtered content
  * @param integer  $consumed The count of altered characters as buckets pass the filter
  * @param boolean  $closing  Is the stream about to close?
  *
  * @throws \AppserverIo\Doppelgaenger\Exceptions\GeneratorException
  *
  * @return integer
  *
  * @link http://www.php.net/manual/en/php-user-filter.filter.php
  */
 public function filter($in, $out, &$consumed, $closing)
 {
     // get all the introductions of a structure definition
     $introductions = $this->params;
     // Get our buckets from the stream
     $interfaceHook = '';
     $keywordNeeded = true;
     while ($bucket = stream_bucket_make_writeable($in)) {
         // Has to be done only once at the beginning of the definition
         if (empty($interfaceHook) && $introductions->count() > 0) {
             // Get the tokens
             $tokens = token_get_all($bucket->data);
             // Go through the tokens and check what we found
             $tokensCount = count($tokens);
             for ($i = 0; $i < $tokensCount; $i++) {
                 // We need something to hook into, right after class header seems fine
                 if (is_array($tokens[$i]) && $tokens[$i][0] === T_CLASS && $tokens[$i - 1][0] !== T_PAAMAYIM_NEKUDOTAYIM) {
                     for ($j = $i; $j < $tokensCount; $j++) {
                         // If we got the opening bracket we can break
                         if ($tokens[$j] === '{' || $tokens[$j][0] === T_CURLY_OPEN) {
                             break;
                         }
                         if (is_array($tokens[$j])) {
                             // we have to check if there already are interfaces
                             if ($tokens[$j][0] === T_IMPLEMENTS) {
                                 $keywordNeeded = false;
                             }
                             $interfaceHook .= $tokens[$j][1];
                         } else {
                             $interfaceHook .= $tokens[$j];
                         }
                     }
                     // build up the injected code and make the injection
                     if ($keywordNeeded) {
                         $implementsCode = ' implements ';
                     } else {
                         $implementsCode = ', ';
                     }
                     $useCode = '';
                     $interfaces = array();
                     foreach ($introductions as $introduction) {
                         $interfaces[] = $introduction->getInterface();
                         // build up code for the trait usage
                         $useCode .= 'use ' . $introduction->getImplementation() . ';
                         ';
                     }
                     $implementsCode .= implode(', ', $interfaces);
                     // add the "use" code
                     $bucket->data = str_replace($interfaceHook . '{', $interfaceHook . '{' . $useCode, $bucket->data);
                     // add the "implements" code
                     $bucket->data = str_replace($interfaceHook, $interfaceHook . $implementsCode, $bucket->data);
                 }
             }
         }
         // Tell them how much we already processed, and stuff it back into the output
         $consumed += $bucket->datalen;
         stream_bucket_append($out, $bucket);
     }
     return PSFS_PASS_ON;
 }
开发者ID:appserver-io,项目名称:doppelgaenger,代码行数:76,代码来源:IntroductionFilter.php

示例10: filter

 function filter($in, $out, &$consumed, $closing)
 {
     while ($bucket = stream_bucket_make_writeable($in)) {
         $consumed += $bucket->datalen;
         stream_bucket_append($out, $bucket);
     }
     return PSFS_PASS_ON;
 }
开发者ID:badlamer,项目名称:hhvm,代码行数:8,代码来源:bug46164-1.php

示例11: filter

 function filter($in, $out, &$consumed, $closing)
 {
     while ($ib = stream_bucket_make_writeable($in)) {
         $ob = stream_bucket_new($this->stream, strtoupper($ib->data));
         stream_bucket_append($out, $ob);
     }
     return PSFS_PASS_ON;
 }
开发者ID:badlamer,项目名称:hhvm,代码行数:8,代码来源:user_filter_order.php

示例12: filter

 public function filter($in, $out, &$consumed, $closing)
 {
     while ($bucket = stream_bucket_make_writeable($in)) {
         $bucket->data = preg_replace(self::$pattern, '', $bucket->data);
         $consumed += $bucket->datalen;
         stream_bucket_append($out, $bucket);
     }
     return PSFS_PASS_ON;
 }
开发者ID:spress,项目名称:spress-import,代码行数:9,代码来源:ValidUtf8XmlFilter.php

示例13: filter

 function filter($in, $out, &$consumed, $closing)
 {
     while ($bucket = stream_bucket_make_writeable($in)) {
         $consumed += $bucket->datalen;
         $bucket->data = call_user_func($this->params["func"], $this, $bucket->data, $closing);
         stream_bucket_append($out, $bucket);
     }
     return PSFS_PASS_ON;
 }
开发者ID:m6w6,项目名称:atick,代码行数:9,代码来源:Filter.php

示例14: filter

 function filter($in, $out, &$consumed, $closing)
 {
     while ($bucket = stream_bucket_make_writeable($in)) {
         $bucket->data = preg_replace("/[\r\n]+\$/", "\r\n", $bucket->data);
         $consumed += $bucket->datalen;
         stream_bucket_append($out, $bucket);
     }
     return PSFS_PASS_ON;
 }
开发者ID:ChigusaYasoda,项目名称:ec-cube,代码行数:9,代码来源:Lf2crlfFilter.php

示例15: filter

 /**
  * Filter implementation converts encoding before returning PSFS_PASS_ON.
  * 
  * @param resource $in
  * @param resource $out
  * @param int $consumed
  * @param bool $closing
  * @return int
  */
 public function filter($in, $out, &$consumed, $closing)
 {
     while ($bucket = stream_bucket_make_writeable($in)) {
         $bucket->data = mb_convert_encoding($bucket->data, 'UTF-8', $this->charset);
         $consumed += $bucket->datalen;
         stream_bucket_append($out, $bucket);
     }
     return PSFS_PASS_ON;
 }
开发者ID:surebert,项目名称:MailMimeParser,代码行数:18,代码来源:CharsetStreamFilter.php


注:本文中的stream_bucket_make_writeable函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。