亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? abstract.php

?? zend的加強包 zend的加強包
?? PHP
字號:
<?php/** * Zend Framework * * LICENSE * * This source file is subject to the new BSD license that is bundled * with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://framework.zend.com/license/new-bsd * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@zend.com so we can send you a copy immediately. * * @category   Zend * @package    Zend_Controller * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com) * @license    http://framework.zend.com/license/new-bsd     New BSD License *//** * Zend_Server_Reflection_Exception */require_once 'Zend/Server/Reflection/Exception.php';/** * Zend_Server_Reflection_Node */require_once 'Zend/Server/Reflection/Node.php';/** * Zend_Server_Reflection_Parameter */require_once 'Zend/Server/Reflection/Parameter.php';/** * Zend_Server_Reflection_Prototype */require_once 'Zend/Server/Reflection/Prototype.php';/** * Function/Method Reflection * * Decorates a ReflectionFunction. Allows setting and retrieving an alternate * 'service' name (i.e., the name to be used when calling via a service), * setting and retrieving the description (originally set using the docblock * contents), retrieving the callback and callback type, retrieving additional * method invocation arguments, and retrieving the * method {@link Zend_Server_Reflection_Prototype prototypes}. * * @category   Zend * @package    Zend_Server * @subpackage Reflection * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com) * @license    http://framework.zend.com/license/new-bsd     New BSD License * @version $Id: Abstract.php 8064 2008-02-16 10:58:39Z thomas $ */abstract class Zend_Server_Reflection_Function_Abstract{    /**     * @var ReflectionFunction     */    protected $_reflection;    /**     * Additional arguments to pass to method on invocation     * @var array     */    protected $_argv = array();    /**     * Used to store extra configuration for the method (typically done by the     * server class, e.g., to indicate whether or not to instantiate a class).     * Associative array; access is as properties via {@link __get()} and     * {@link __set()}     * @var array     */    protected $_config = array();    /**     * Declaring class (needed for when serialization occurs)     * @var string     */    protected $_class;    /**     * Function/method description     * @var string     */    protected $_description = '';    /**     * Namespace with which to prefix function/method name     * @var string     */    protected $_namespace;    /**     * Prototypes     * @var array     */    protected $_prototypes = array();    private $_return;    private $_returnDesc;    private $_paramDesc;    private $_sigParams;    private $_sigParamsDepth;    /**     * Constructor     *     * @param ReflectionFunction $r     */    public function __construct(Reflector $r, $namespace = null, $argv = array())    {        // In PHP 5.1.x, ReflectionMethod extends ReflectionFunction. In 5.2.x,        // both extend ReflectionFunctionAbstract. So, we can't do normal type        // hinting in the prototype, but instead need to do some explicit        // testing here.        if ((!$r instanceof ReflectionFunction)            && (!$r instanceof ReflectionMethod)) {            throw new Zend_Server_Reflection_Exception('Invalid reflection class');        }        $this->_reflection = $r;        // Determine namespace        if (null !== $namespace){            $this->setNamespace($namespace);        }        // Determine arguments        if (is_array($argv)) {            $this->_argv = $argv;        }        // If method call, need to store some info on the class        if ($r instanceof ReflectionMethod) {            $this->_class = $r->getDeclaringClass()->getName();        }        // Perform some introspection        $this->_reflect();    }    /**     * Create signature node tree     *     * Recursive method to build the signature node tree. Increments through     * each array in {@link $_sigParams}, adding every value of the next level     * to the current value (unless the current value is null).     *     * @param Zend_Server_Reflection_Node $parent     * @param int $level     * @return void     */    protected function _addTree(Zend_Server_Reflection_Node $parent, $level = 0)    {        if ($level >= $this->_sigParamsDepth) {            return;        }        foreach ($this->_sigParams[$level] as $value) {            $node = new Zend_Server_Reflection_Node($value, $parent);            if ((null !== $value) && ($this->_sigParamsDepth > $level + 1)) {                $this->_addTree($node, $level + 1);            }        }    }    /**     * Build the signature tree     *     * Builds a signature tree starting at the return values and descending     * through each method argument. Returns an array of     * {@link Zend_Server_Reflection_Node}s.     *     * @return array     */    protected function _buildTree()    {        $returnTree = array();        foreach ((array) $this->_return as $value) {            $node = new Zend_Server_Reflection_Node($value);            $this->_addTree($node);            $returnTree[] = $node;        }        return $returnTree;    }    /**     * Build method signatures     *     * Builds method signatures using the array of return types and the array of     * parameters types     *     * @param array $return Array of return types     * @param string $returnDesc Return value description     * @param array $params Array of arguments (each an array of types)     * @param array $paramDesc Array of parameter descriptions     * @return array     */    protected function _buildSignatures($return, $returnDesc, $paramTypes, $paramDesc)    {        $this->_return         = $return;        $this->_returnDesc     = $returnDesc;        $this->_paramDesc      = $paramDesc;        $this->_sigParams      = $paramTypes;        $this->_sigParamsDepth = count($paramTypes);        $signatureTrees        = $this->_buildTree();        $signatures            = array();        $endPoints = array();        foreach ($signatureTrees as $root) {            $tmp = $root->getEndPoints();            if (empty($tmp)) {                $endPoints = array_merge($endPoints, array($root));            } else {                $endPoints = array_merge($endPoints, $tmp);            }        }        foreach ($endPoints as $node) {            if (!$node instanceof Zend_Server_Reflection_Node) {                continue;            }            $signature = array();            do {                array_unshift($signature, $node->getValue());                $node = $node->getParent();            } while ($node instanceof Zend_Server_Reflection_Node);            $signatures[] = $signature;        }        // Build prototypes        $params = $this->_reflection->getParameters();        foreach ($signatures as $signature) {            $return = new Zend_Server_Reflection_ReturnValue(array_shift($signature), $this->_returnDesc);            $tmp    = array();            foreach ($signature as $key => $type) {                $param = new Zend_Server_Reflection_Parameter($params[$key], $type, $this->_paramDesc[$key]);                $param->setPosition($key);                $tmp[] = $param;            }            $this->_prototypes[] = new Zend_Server_Reflection_Prototype($return, $tmp);        }    }    /**     * Use code reflection to create method signatures     *     * Determines the method help/description text from the function DocBlock     * comment. Determines method signatures using a combination of     * ReflectionFunction and parsing of DocBlock @param and @return values.     *     * @param ReflectionFunction $function     * @return array     */    protected function _reflect()    {        $function           = $this->_reflection;        $helpText           = '';        $signatures         = array();        $returnDesc         = '';        $paramCount         = $function->getNumberOfParameters();        $paramCountRequired = $function->getNumberOfRequiredParameters();        $parameters         = $function->getParameters();        $docBlock           = $function->getDocComment();        if (!empty($docBlock)) {            // Get help text            if (preg_match(':/\*\*\s*\r?\n\s*\*\s(.*?)\r?\n\s*\*(\s@|/):s', $docBlock, $matches))            {                $helpText = $matches[1];                $helpText = preg_replace('/(^\s*\*\s)/m', '', $helpText);                $helpText = preg_replace('/\r?\n\s*\*\s*(\r?\n)*/s', "\n", $helpText);                $helpText = trim($helpText);            }            // Get return type(s) and description            $return     = 'void';            if (preg_match('/@return\s+(\S+)/', $docBlock, $matches)) {                $return = explode('|', $matches[1]);                if (preg_match('/@return\s+\S+\s+(.*?)(@|\*\/)/s', $docBlock, $matches))                {                    $value = $matches[1];                    $value = preg_replace('/\s?\*\s/m', '', $value);                    $value = preg_replace('/\s{2,}/', ' ', $value);                    $returnDesc = trim($value);                }            }            // Get param types and description            if (preg_match_all('/@param\s+([^\s]+)/m', $docBlock, $matches)) {                $paramTypesTmp = $matches[1];                if (preg_match_all('/@param\s+\S+\s+(\$^\S+)\s+(.*?)(@|\*\/)/s', $docBlock, $matches))                {                    $paramDesc = $matches[2];                    foreach ($paramDesc as $key => $value) {                        $value = preg_replace('/\s?\*\s/m', '', $value);                        $value = preg_replace('/\s{2,}/', ' ', $value);                        $paramDesc[$key] = trim($value);                    }                }            }        } else {            $helpText = $function->getName();            $return   = 'void';        }        // Set method description        $this->setDescription($helpText);        // Get all param types as arrays        if (!isset($paramTypesTmp) && (0 < $paramCount)) {            $paramTypesTmp = array_fill(0, $paramCount, 'mixed');        } elseif (!isset($paramTypesTmp)) {            $paramTypesTmp = array();        } elseif (count($paramTypesTmp) < $paramCount) {            $start = $paramCount - count($paramTypesTmp);            for ($i = $start; $i < $paramCount; ++$i) {                $paramTypesTmp[$i] = 'mixed';            }        }        // Get all param descriptions as arrays        if (!isset($paramDesc) && (0 < $paramCount)) {            $paramDesc = array_fill(0, $paramCount, '');        } elseif (!isset($paramDesc)) {            $paramDesc = array();        } elseif (count($paramDesc) < $paramCount) {            $start = $paramCount - count($paramDesc);            for ($i = $start; $i < $paramCount; ++$i) {                $paramDesc[$i] = '';            }        }        $paramTypes = array();        foreach ($paramTypesTmp as $i => $param) {            $tmp = explode('|', $param);            if ($parameters[$i]->isOptional()) {                array_unshift($tmp, null);            }            $paramTypes[] = $tmp;        }        $this->_buildSignatures($return, $returnDesc, $paramTypes, $paramDesc);    }    /**     * Proxy reflection calls     *     * @param string $method     * @param array $args     * @return mixed     */    public function __call($method, $args)    {        if (method_exists($this->_reflection, $method)) {            return call_user_func_array(array($this->_reflection, $method), $args);        }        throw new Zend_Server_Reflection_Exception('Invalid reflection method ("' .$method. '")');    }    /**     * Retrieve configuration parameters     *     * Values are retrieved by key from {@link $_config}. Returns null if no     * value found.     *     * @param string $key     * @return mixed     */    public function __get($key)    {        if (isset($this->_config[$key])) {            return $this->_config[$key];        }        return null;    }    /**     * Set configuration parameters     *     * Values are stored by $key in {@link $_config}.     *     * @param string $key     * @param mixed $value     * @return void     */    public function __set($key, $value)    {        $this->_config[$key] = $value;    }    /**     * Set method's namespace     *     * @param string $namespace     * @return void     */    public function setNamespace($namespace)    {        if (empty($namespace)) {            $this->_namespace = '';            return;        }        if (!is_string($namespace) || !preg_match('/[a-z0-9_\.]+/i', $namespace)) {            throw new Zend_Server_Reflection_Exception('Invalid namespace');        }        $this->_namespace = $namespace;    }    /**     * Return method's namespace     *     * @return string     */    public function getNamespace()    {        return $this->_namespace;    }    /**     * Set the description     *     * @param string $string     * @return void     */    public function setDescription($string)    {        if (!is_string($string)) {            throw new Zend_Server_Reflection_Exception('Invalid description');        }        $this->_description = $string;    }    /**     * Retrieve the description     *     * @return void     */    public function getDescription()    {        return $this->_description;    }    /**     * Retrieve all prototypes as array of     * {@link Zend_Server_Reflection_Prototype Zend_Server_Reflection_Prototypes}     *     * @return array     */    public function getPrototypes()    {        return $this->_prototypes;    }    /**     * Retrieve additional invocation arguments     *     * @return array     */    public function getInvokeArguments()    {        return $this->_argv;    }    /**     * Wakeup from serialization     *     * Reflection needs explicit instantiation to work correctly. Re-instantiate     * reflection object on wakeup.     *     * @return void     */    public function __wakeup()    {        if ($this->_reflection instanceof ReflectionMethod) {            $class = new ReflectionClass($this->_class);            $this->_reflection = new ReflectionMethod($class->newInstance(), $this->getName());        } else {            $this->_reflection = new ReflectionFunction($this->getName());        }    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷av久久久久久久| 日韩精品欧美精品| 一区二区三区高清在线| 日本一区二区三区久久久久久久久不| 中文字幕欧美激情| 亚洲四区在线观看| 三级在线观看一区二区| 日韩av电影天堂| 国模套图日韩精品一区二区| 国产成人在线免费观看| 国产精一区二区三区| av午夜精品一区二区三区| 一本久道中文字幕精品亚洲嫩 | aaa欧美色吧激情视频| 一本大道久久a久久综合婷婷| 欧洲一区在线观看| 日韩精品一区二区三区视频播放| 欧美国产激情二区三区| 亚洲国产日韩精品| 国产高清久久久| 92国产精品观看| 欧美视频第二页| 久久久精品国产免大香伊| 亚洲乱码日产精品bd| 丝袜脚交一区二区| 国产传媒一区在线| 色哟哟在线观看一区二区三区| 欧美浪妇xxxx高跟鞋交| 日韩精品一区二区三区swag | 日韩欧美aaaaaa| 中文字幕高清一区| 婷婷综合另类小说色区| 国产乱码字幕精品高清av | 一本一道综合狠狠老| 制服.丝袜.亚洲.另类.中文| 国产日韩欧美精品电影三级在线| 亚洲综合图片区| 久久99精品久久只有精品| 99久久99久久精品免费看蜜桃| 91麻豆精品国产91久久久久久 | 中文字幕制服丝袜一区二区三区| 亚洲成人免费av| 从欧美一区二区三区| 欧美日韩成人综合天天影院 | 久久九九久精品国产免费直播| 亚洲精品视频免费看| 久久99蜜桃精品| 波波电影院一区二区三区| 51久久夜色精品国产麻豆| 国产精品毛片久久久久久| 日本视频免费一区| 91视频免费看| 国产欧美日韩在线视频| 肉色丝袜一区二区| 99久久免费精品高清特色大片| 精品理论电影在线观看| 亚洲在线成人精品| 成人高清视频免费观看| 日韩午夜精品视频| |精品福利一区二区三区| 日韩精品亚洲专区| 91久久免费观看| 1024国产精品| 成人自拍视频在线| 欧美电影免费观看高清完整版在| 亚洲在线免费播放| 色婷婷国产精品综合在线观看| 欧美激情在线一区二区| 久久精品免费观看| 欧美在线观看视频一区二区| 一区在线播放视频| 大陆成人av片| 久久午夜电影网| 麻豆国产欧美一区二区三区| 欧美日韩一区三区| 亚洲综合色丁香婷婷六月图片| a级精品国产片在线观看| 欧美激情一区在线| 大陆成人av片| 国产精品毛片a∨一区二区三区| 国产精品一区二区在线播放| 欧美精品一区二区三区蜜桃| 日韩国产高清影视| 欧美二区乱c少妇| 亚洲福利一区二区三区| 欧美日韩一区二区三区在线看| 亚洲天堂av一区| 色网综合在线观看| 国产精品电影一区二区三区| 国产激情一区二区三区桃花岛亚洲| 精品国产乱码久久久久久夜甘婷婷| 久久爱另类一区二区小说| 日韩你懂的在线播放| 久久97超碰国产精品超碰| 欧美变态口味重另类| 蜜桃91丨九色丨蝌蚪91桃色| 日韩你懂的在线观看| 激情欧美一区二区| 久久精品网站免费观看| 精品一区二区三区在线观看| 欧美精品一区二区三区很污很色的| 精品亚洲成av人在线观看| 亚洲精品在线电影| 国产精品77777竹菊影视小说| 久久午夜老司机| jizzjizzjizz欧美| 一区二区三区在线观看视频| 欧美视频自拍偷拍| 日韩精品每日更新| 精品理论电影在线观看| 高清shemale亚洲人妖| 国产精品国产三级国产普通话三级| 色老汉av一区二区三区| 天天综合色天天综合| 欧美成人a∨高清免费观看| 国产一区91精品张津瑜| 国产精品第13页| 欧美色图12p| 三级久久三级久久久| 久久九九久精品国产免费直播| av网站免费线看精品| 五月婷婷综合网| 国产三级精品三级| 色狠狠综合天天综合综合| 日韩一区精品字幕| 久久久午夜电影| 欧美专区日韩专区| 久色婷婷小香蕉久久| 亚洲欧美成人一区二区三区| 日韩欧美成人一区| 91黄色小视频| 国产成人午夜电影网| 五月天丁香久久| 1024成人网| 久久免费的精品国产v∧| 欧美三片在线视频观看| 国产成人亚洲综合a∨婷婷| 日韩av在线播放中文字幕| 亚洲欧美日韩久久| 精品福利av导航| 欧美日韩国产高清一区二区| av中文字幕一区| 国产自产2019最新不卡| 香港成人在线视频| 中文字幕一区三区| 欧美不卡一二三| 在线播放国产精品二区一二区四区 | 国产福利精品导航| 日韩中文字幕1| 夜夜嗨av一区二区三区中文字幕| 国产欧美精品一区二区色综合朱莉| 91精品国产综合久久久久久漫画 | 亚洲精品高清在线| 中文字幕va一区二区三区| 欧美xfplay| 91精品国产入口在线| 91福利在线免费观看| 国产.欧美.日韩| 国产一区二区主播在线| 日韩国产精品久久久| 亚洲一区二区在线视频| 1024国产精品| 国产精品免费视频观看| 国产日韩欧美麻豆| 精品成人在线观看| 欧美一卡在线观看| 91精品国产综合久久蜜臀| 欧美三级电影在线观看| 91成人免费电影| 91色.com| 99精品视频一区| 成人午夜在线免费| 精品国产髙清在线看国产毛片| 国产高清不卡一区二区| 国产视频一区不卡| 懂色av一区二区三区蜜臀| 亚洲精品伦理在线| 欧美精品久久一区二区三区| 亚洲一区在线播放| 久久久www成人免费毛片麻豆 | 图片区小说区区亚洲影院| 欧美三级电影在线看| 懂色av中文一区二区三区| 亚洲综合色在线| 国产精品色在线| 精品奇米国产一区二区三区| 色婷婷av一区二区三区之一色屋| 精品中文字幕一区二区小辣椒| 亚洲三级在线播放| 国产午夜精品美女毛片视频| 在线视频你懂得一区| 91小视频在线| 成人黄色av电影| 久久成人免费网| 午夜欧美2019年伦理| 亚洲欧美日韩国产一区二区三区 | 国产精品污网站| 亚洲精品一区二区三区影院| 宅男在线国产精品| 在线日韩av片|