⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 common.php

📁 php-4.4.7学习linux时下载的源代码
💻 PHP
📖 第 1 页 / 共 3 页
字号:
     * a package xml file as input.     *     * @param string  $descfile  name of package xml file     *     * @return array  array with package information     *     * @access public     * @deprecated use PEAR_PackageFile->fromPackageFile() instead     *     */    function infoFromDescriptionFile($descfile)    {        $packagefile = &new PEAR_PackageFile($this->config);        $pf = &$packagefile->fromPackageFile($descfile, PEAR_VALIDATE_NORMAL);        if (PEAR::isError($pf)) {            $errs = $pf->getUserinfo();            if (is_array($errs)) {                foreach ($errs as $error) {                    $e = $this->raiseError($error['message'], $error['code'], null, null, $error);                }            }            return $pf;        }        return $this->_postProcessValidPackagexml($pf);    }    // }}}    // {{{ infoFromString()    /**     * Returns information about a package file.  Expects the contents     * of a package xml file as input.     *     * @param string  $data  contents of package.xml file     *     * @return array   array with package information     *     * @access public     * @deprecated use PEAR_PackageFile->fromXmlstring() instead     *     */    function infoFromString($data)    {        $packagefile = &new PEAR_PackageFile($this->config);        $pf = &$packagefile->fromXmlString($data, PEAR_VALIDATE_NORMAL, false);        if (PEAR::isError($pf)) {            $errs = $pf->getUserinfo();            if (is_array($errs)) {                foreach ($errs as $error) {                    $e = $this->raiseError($error['message'], $error['code'], null, null, $error);                }            }            return $pf;        }        return $this->_postProcessValidPackagexml($pf);    }    // }}}    /**     * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2     * @return array     */    function _postProcessValidPackagexml(&$pf)    {        if (is_a($pf, 'PEAR_PackageFile_v2')) {            // sort of make this into a package.xml 1.0-style array            // changelog is not converted to old format.            $arr = $pf->toArray(true);            $arr = array_merge($arr, $arr['old']);            unset($arr['old']);            unset($arr['xsdversion']);            unset($arr['contents']);            unset($arr['compatible']);            unset($arr['channel']);            unset($arr['uri']);            unset($arr['dependencies']);            unset($arr['phprelease']);            unset($arr['extsrcrelease']);            unset($arr['extbinrelease']);            unset($arr['bundle']);            unset($arr['lead']);            unset($arr['developer']);            unset($arr['helper']);            unset($arr['contributor']);            $arr['filelist'] = $pf->getFilelist();            $this->pkginfo = $arr;            return $arr;        } else {            $this->pkginfo = $pf->toArray();            return $this->pkginfo;        }    }    // {{{ infoFromAny()    /**     * Returns package information from different sources     *     * This method is able to extract information about a package     * from a .tgz archive or from a XML package definition file.     *     * @access public     * @param  string Filename of the source ('package.xml', '<package>.tgz')     * @return string     * @deprecated use PEAR_PackageFile->fromAnyFile() instead     */    function infoFromAny($info)    {        if (is_string($info) && file_exists($info)) {            $packagefile = &new PEAR_PackageFile($this->config);            $pf = &$packagefile->fromAnyFile($info, PEAR_VALIDATE_NORMAL);            if (PEAR::isError($pf)) {                $errs = $pf->getUserinfo();                if (is_array($errs)) {                    foreach ($errs as $error) {                        $e = $this->raiseError($error['message'], $error['code'], null, null, $error);                    }                }                return $pf;            }            return $this->_postProcessValidPackagexml($pf);        }        return $info;    }    // }}}    // {{{ xmlFromInfo()    /**     * Return an XML document based on the package info (as returned     * by the PEAR_Common::infoFrom* methods).     *     * @param array  $pkginfo  package info     *     * @return string XML data     *     * @access public     * @deprecated use a PEAR_PackageFile_v* object's generator instead     */    function xmlFromInfo($pkginfo)    {        $config = &PEAR_Config::singleton();        $packagefile = &new PEAR_PackageFile($config);        $pf = &$packagefile->fromArray($pkginfo);        $gen = &$pf->getDefaultGenerator();        return $gen->toXml(PEAR_VALIDATE_PACKAGING);    }    // }}}    // {{{ validatePackageInfo()    /**     * Validate XML package definition file.     *     * @param  string $info Filename of the package archive or of the     *                package definition file     * @param  array $errors Array that will contain the errors     * @param  array $warnings Array that will contain the warnings     * @param  string $dir_prefix (optional) directory where source files     *                may be found, or empty if they are not available     * @access public     * @return boolean     * @deprecated use the validation of PEAR_PackageFile objects     */    function validatePackageInfo($info, &$errors, &$warnings, $dir_prefix = '')    {        $config = &PEAR_Config::singleton();        $packagefile = &new PEAR_PackageFile($config);        PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN);        if (strpos($info, '<?xml') !== false) {            $pf = &$packagefile->fromXmlString($info, PEAR_VALIDATE_NORMAL, '');        } else {            $pf = &$packagefile->fromAnyFile($info, PEAR_VALIDATE_NORMAL);        }        PEAR::staticPopErrorHandling();        if (PEAR::isError($pf)) {            $errs = $pf->getUserinfo();            if (is_array($errs)) {                foreach ($errs as $error) {                    if ($error['level'] == 'error') {                        $errors[] = $error['message'];                    } else {                        $warnings[] = $error['message'];                    }                }            }            return false;        }        return true;    }    // }}}    // {{{ buildProvidesArray()    /**     * Build a "provides" array from data returned by     * analyzeSourceCode().  The format of the built array is like     * this:     *     *  array(     *    'class;MyClass' => 'array('type' => 'class', 'name' => 'MyClass'),     *    ...     *  )     *     *     * @param array $srcinfo array with information about a source file     * as returned by the analyzeSourceCode() method.     *     * @return void     *     * @access public     *     */    function buildProvidesArray($srcinfo)    {        $file = basename($srcinfo['source_file']);        $pn = '';        if (isset($this->_packageName)) {            $pn = $this->_packageName;        }        $pnl = strlen($pn);        foreach ($srcinfo['declared_classes'] as $class) {            $key = "class;$class";            if (isset($this->pkginfo['provides'][$key])) {                continue;            }            $this->pkginfo['provides'][$key] =                array('file'=> $file, 'type' => 'class', 'name' => $class);            if (isset($srcinfo['inheritance'][$class])) {                $this->pkginfo['provides'][$key]['extends'] =                    $srcinfo['inheritance'][$class];            }        }        foreach ($srcinfo['declared_methods'] as $class => $methods) {            foreach ($methods as $method) {                $function = "$class::$method";                $key = "function;$function";                if ($method{0} == '_' || !strcasecmp($method, $class) ||                    isset($this->pkginfo['provides'][$key])) {                    continue;                }                $this->pkginfo['provides'][$key] =                    array('file'=> $file, 'type' => 'function', 'name' => $function);            }        }        foreach ($srcinfo['declared_functions'] as $function) {            $key = "function;$function";            if ($function{0} == '_' || isset($this->pkginfo['provides'][$key])) {                continue;            }            if (!strstr($function, '::') && strncasecmp($function, $pn, $pnl)) {                $warnings[] = "in1 " . $file . ": function \"$function\" not prefixed with package name \"$pn\"";            }            $this->pkginfo['provides'][$key] =                array('file'=> $file, 'type' => 'function', 'name' => $function);        }    }    // }}}    // {{{ analyzeSourceCode()    /**     * Analyze the source code of the given PHP file     *     * @param  string Filename of the PHP file     * @return mixed     * @access public     */    function analyzeSourceCode($file)    {        if (!function_exists("token_get_all")) {            return false;        }        if (!defined('T_DOC_COMMENT')) {            define('T_DOC_COMMENT', T_COMMENT);        }        if (!defined('T_INTERFACE')) {            define('T_INTERFACE', -1);        }        if (!defined('T_IMPLEMENTS')) {            define('T_IMPLEMENTS', -1);        }        if (!$fp = @fopen($file, "r")) {            return false;        }        if (function_exists('file_get_contents')) {            fclose($fp);            $contents = file_get_contents($file);        } else {            $contents = fread($fp, filesize($file));            fclose($fp);        }        $tokens = token_get_all($contents);/*        for ($i = 0; $i < sizeof($tokens); $i++) {            @list($token, $data) = $tokens[$i];            if (is_string($token)) {                var_dump($token);            } else {                print token_name($token) . ' ';                var_dump(rtrim($data));            }        }*/        $look_for = 0;        $paren_level = 0;        $bracket_level = 0;        $brace_level = 0;        $lastphpdoc = '';        $current_class = '';        $current_interface = '';        $current_class_level = -1;        $current_function = '';        $current_function_level = -1;        $declared_classes = array();        $declared_interfaces = array();        $declared_functions = array();        $declared_methods = array();        $used_classes = array();        $used_functions = array();        $extends = array();        $implements = array();        $nodeps = array();        $inquote = false;        $interface = false;        for ($i = 0; $i < sizeof($tokens); $i++) {            if (is_array($tokens[$i])) {                list($token, $data) = $tokens[$i];            } else {                $token = $tokens[$i];                $data = '';            }            if ($inquote) {                if ($token != '"') {                    continue;                } else {                    $inquote = false;                    continue;                }            }            switch ($token) {                case T_WHITESPACE:                    continue;                case ';':                    if ($interface) {                        $current_function = '';                        $current_function_level = -1;                    }                    break;                case '"':                    $inquote = true;                    break;                case T_CURLY_OPEN:                case T_DOLLAR_OPEN_CURLY_BRACES:                case '{': $brace_level++; continue 2;                case '}':                    $brace_level--;                    if ($current_class_level == $brace_level) {                        $current_class = '';                        $current_class_level = -1;                    }                    if ($current_function_level == $brace_level) {                        $current_function = '';                        $current_function_level = -1;                    }                    continue 2;                case '[': $bracket_level++; continue 2;                case ']': $bracket_level--; continue 2;                case '(': $paren_level++;   continue 2;                case ')': $paren_level--;   continue 2;                case T_INTERFACE:                    $interface = true;                case T_CLASS:                    if (($current_class_level != -1) || ($current_function_level != -1)) {                        PEAR::raiseError("Parser error: invalid PHP found in file \"$file\"",                            PEAR_COMMON_ERROR_INVALIDPHP);                        return false;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -