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


PHP ReflectionFunction::isGenerator方法代码示例

本文整理汇总了PHP中ReflectionFunction::isGenerator方法的典型用法代码示例。如果您正苦于以下问题:PHP ReflectionFunction::isGenerator方法的具体用法?PHP ReflectionFunction::isGenerator怎么用?PHP ReflectionFunction::isGenerator使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ReflectionFunction的用法示例。


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

示例1: send

 public function send(StreamInterface $stream)
 {
     if (!$stream->isWritable()) {
         throw new \InvalidArgumentException('Output stream must be writable');
     }
     if (is_array($this->callback)) {
         $ref = (new \ReflectionClass(is_object($this->callback[0]) ? get_class($this->callback[0]) : $this->callback[0]))->getMethod($this->callback[1]);
     } elseif (is_object($this->callback) && !$this->callback instanceof \Closure) {
         $ref = new \ReflectionMethod(get_class($this->callback), '__invoke');
     } else {
         $ref = new \ReflectionFunction($this->callback);
     }
     if ($ref->isGenerator()) {
         foreach (call_user_func($this->callback) as $chunk) {
             $stream->write($chunk);
         }
         return;
     }
     foreach ($ref->getParameters() as $param) {
         if (NULL !== ($type = $param->getClass())) {
             if ($type->name === StreamInterface::class || $type->implementsInterface(StreamInterface::class)) {
                 call_user_func($this->callback, $stream);
                 return;
             }
         }
         break;
     }
     $stream->write((string) call_user_func($this->callback));
 }
开发者ID:koolkode,项目名称:http,代码行数:29,代码来源:CallbackEntity.php

示例2: wrap

function wrap($handler)
{
    if (class_exists("\\Generator") && is_callable($handler)) {
        if (is_array($handler)) {
            $m = new ReflectionMethod($handler[0], $handler[1]);
        } else {
            $m = new ReflectionFunction($handler);
        }
        if ($m->isGenerator()) {
            return function () use($handler) {
                return all(func_get_args())->then(function ($args) use($handler) {
                    array_splice($args, 0, 0, array($handler));
                    return call_user_func_array('\\Hprose\\Future\\co', $args);
                });
            };
        }
    }
    if (is_object($handler)) {
        if (is_callable($handler)) {
            return new CallableWrapper($handler);
        }
        return new Wrapper($handler);
    }
    if (is_callable($handler)) {
        return function () use($handler) {
            return all(func_get_args())->then(function ($args) use($handler) {
                return call_user_func_array($handler, $args);
            });
        };
    }
    return $handler;
}
开发者ID:qieangel2013,项目名称:zys,代码行数:32,代码来源:functions.php

示例3: func1

};
$rf1 = new ReflectionFunction($closure1);
var_dump($rf1->isGenerator());
$rf2 = new ReflectionFunction($closure2);
var_dump($rf2->isGenerator());
function func1()
{
    return 'func1';
}
function func2()
{
    (yield 'func2');
}
$rf1 = new ReflectionFunction('func1');
var_dump($rf1->isGenerator());
$rf2 = new ReflectionFunction('func2');
var_dump($rf2->isGenerator());
class Foo
{
    public function f1()
    {
    }
    public function f2()
    {
        yield;
    }
}
$rc = new ReflectionClass('Foo');
foreach ($rc->getMethods() as $m) {
    var_dump($m->isGenerator());
}
开发者ID:badlamer,项目名称:hhvm,代码行数:31,代码来源:ReflectionFunction_isGenerator_basic.php

示例4: addFunction

 public function addFunction($func, $alias = '', array $options = array())
 {
     if (!is_callable($func)) {
         throw new Exception('Argument func must be callable.');
     }
     if (is_array($alias) && empty($options)) {
         $options = $alias;
         $alias = '';
     }
     if (empty($alias)) {
         if (is_string($func)) {
             $alias = $func;
         } elseif (is_array($func)) {
             $alias = $func[1];
         } else {
             throw new Exception('Need an alias');
         }
     }
     $name = strtolower($alias);
     if (!array_key_exists($name, $this->calls)) {
         $this->names[] = $alias;
     }
     if (class_exists("\\Generator")) {
         if (is_array($func)) {
             $f = new ReflectionMethod($func[0], $func[1]);
         } else {
             $f = new ReflectionFunction($func);
         }
         if ($f->isGenerator()) {
             $func = wrap($func);
         }
     }
     $call = new stdClass();
     $call->method = $func;
     $call->mode = isset($options['mode']) ? $options['mode'] : ResultMode::Normal;
     $call->simple = isset($options['simple']) ? $options['simple'] : null;
     $call->oneway = isset($options['oneway']) ? $options['oneway'] : false;
     $call->async = isset($options['async']) ? $options['async'] : false;
     $call->passContext = isset($options['passContext']) ? $options['passContext'] : null;
     $this->calls[$name] = $call;
     return $this;
 }
开发者ID:qieangel2013,项目名称:zys,代码行数:42,代码来源:Socket_Service.php


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