registry.php

来自「视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.」· PHP 代码 · 共 1,067 行 · 第 1/4 页

PHP
1,067
字号
<?php/** * PEAR_Command_Registry (list, list-files, shell-test, info commands) * * PHP versions 4 and 5 * * LICENSE: This source file is subject to version 3.0 of the PHP license * that is available through the world-wide-web at the following URI: * http://www.php.net/license/3_0.txt.  If you did not receive a copy of * the PHP License and are unable to obtain it through the web, please * send a note to license@php.net so we can mail you a copy immediately. * * @category   pear * @package    PEAR * @author     Stig Bakken <ssb@php.net> * @author     Greg Beaver <cellog@php.net> * @copyright  1997-2006 The PHP Group * @license    http://www.php.net/license/3_0.txt  PHP License 3.0 * @version    CVS: $Id: Registry.php,v 1.79 2007/05/29 16:38:16 cellog Exp $ * @link       http://pear.php.net/package/PEAR * @since      File available since Release 0.1 *//** * base class */require_once 'PEAR/Command/Common.php';/** * PEAR commands for registry manipulation * * @category   pear * @package    PEAR * @author     Stig Bakken <ssb@php.net> * @author     Greg Beaver <cellog@php.net> * @copyright  1997-2006 The PHP Group * @license    http://www.php.net/license/3_0.txt  PHP License 3.0 * @version    Release: 1.6.1 * @link       http://pear.php.net/package/PEAR * @since      Class available since Release 0.1 */class PEAR_Command_Registry extends PEAR_Command_Common{    // {{{ properties    var $commands = array(        'list' => array(            'summary' => 'List Installed Packages In The Default Channel',            'function' => 'doList',            'shortcut' => 'l',            'options' => array(                'channel' => array(                    'shortopt' => 'c',                    'doc' => 'list installed packages from this channel',                    'arg' => 'CHAN',                    ),                'allchannels' => array(                    'shortopt' => 'a',                    'doc' => 'list installed packages from all channels',                    ),                'channelinfo' => array(                    'shortopt' => 'i',                    'doc' => 'output fully channel-aware data, even on failure',                    ),                ),            'doc' => '<package>If invoked without parameters, this command lists the PEAR packagesinstalled in your php_dir ({config php_dir}).  With a parameter, itlists the files in a package.',            ),        'list-files' => array(            'summary' => 'List Files In Installed Package',            'function' => 'doFileList',            'shortcut' => 'fl',            'options' => array(),            'doc' => '<package>List the files in an installed package.'            ),        'shell-test' => array(            'summary' => 'Shell Script Test',            'function' => 'doShellTest',            'shortcut' => 'st',            'options' => array(),            'doc' => '<package> [[relation] version]Tests if a package is installed in the system. Will exit(1) if it is not.   <relation>   The version comparison operator. One of:                <, lt, <=, le, >, gt, >=, ge, ==, =, eq, !=, <>, ne   <version>    The version to compare with'),        'info' => array(            'summary'  => 'Display information about a package',            'function' => 'doInfo',            'shortcut' => 'in',            'options'  => array(),            'doc'      => '<package>Displays information about a package. The package argument may be alocal package file, an URL to a package file, or the name of aninstalled package.'            )        );    // }}}    // {{{ constructor    /**     * PEAR_Command_Registry constructor.     *     * @access public     */    function PEAR_Command_Registry(&$ui, &$config)    {        parent::PEAR_Command_Common($ui, $config);    }    // }}}    // {{{ doList()    function _sortinfo($a, $b)    {        $apackage = isset($a['package']) ? $a['package'] : $a['name'];        $bpackage = isset($b['package']) ? $b['package'] : $b['name'];        return strcmp($apackage, $bpackage);    }    function doList($command, $options, $params)    {        $reg = &$this->config->getRegistry();        $channelinfo = isset($options['channelinfo']);        if (isset($options['allchannels']) && !$channelinfo) {            return $this->doListAll($command, array(), $params);        }        if (isset($options['allchannels']) && $channelinfo) {            // allchannels with $channelinfo            unset($options['allchannels']);            $channels = $reg->getChannels();            $errors = array();            PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN);            foreach ($channels as $channel) {                $options['channel'] = $channel->getName();                $ret = $this->doList($command, $options, $params);                if (PEAR::isError($ret)) {                    $errors[] = $ret;                }            }            PEAR::staticPopErrorHandling();            if (count($errors)) {                // for now, only give first error                return PEAR::raiseError($errors[0]);            }            return true;        }        if (count($params) == 1) {            return $this->doFileList($command, $options, $params);        }        if (isset($options['channel'])) {            if ($reg->channelExists($options['channel'])) {                $channel = $reg->channelName($options['channel']);            } else {                return $this->raiseError('Channel "' . $options['channel'] .'" does not exist');            }        } else {            $channel = $this->config->get('default_channel');        }        $installed = $reg->packageInfo(null, null, $channel);        usort($installed, array(&$this, '_sortinfo'));        $data = array(            'caption' => 'Installed packages, channel ' .                $channel . ':',            'border' => true,            'headline' => array('Package', 'Version', 'State'),            'channel' => $channel,            );        if ($channelinfo) {            $data['headline'] = array('Channel', 'Package', 'Version', 'State');        }        foreach ($installed as $package) {            $pobj = $reg->getPackage(isset($package['package']) ?                                        $package['package'] : $package['name'], $channel);            if ($channelinfo) {                $packageinfo = array($pobj->getChannel(), $pobj->getPackage(), $pobj->getVersion(),                                    $pobj->getState() ? $pobj->getState() : null);            } else {                $packageinfo = array($pobj->getPackage(), $pobj->getVersion(),                                    $pobj->getState() ? $pobj->getState() : null);            }            $data['data'][] = $packageinfo;        }        if (count($installed) == 0) {            if (!$channelinfo) {                $data = '(no packages installed from channel ' . $channel . ')';            } else {                $data = array(                    'caption' => 'Installed packages, channel ' .                        $channel . ':',                    'border' => true,                    'channel' => $channel,                    'data' => '(no packages installed)',                );            }        }        $this->ui->outputData($data, $command);        return true;    }        function doListAll($command, $options, $params)    {        // This duplicate code is deprecated over        // list --channelinfo, which gives identical        // output for list and list --allchannels.        $reg = &$this->config->getRegistry();        $installed = $reg->packageInfo(null, null, null);        foreach ($installed as $channel => $packages) {            usort($packages, array($this, '_sortinfo'));            $data = array(                'caption' => 'Installed packages, channel ' . $channel . ':',                'border' => true,                'headline' => array('Package', 'Version', 'State'),                'channel' => $channel                );            foreach ($packages as $package) {                $pobj = $reg->getPackage(isset($package['package']) ?                                            $package['package'] : $package['name'], $channel);                $data['data'][] = array($pobj->getPackage(), $pobj->getVersion(),                                        $pobj->getState() ? $pobj->getState() : null);            }            if (count($packages)==0) {                $data = array(                    'caption' => 'Installed packages, channel ' . $channel . ':',                    'border' => true,                    'data' => array(array('(no packages installed)')),                    'channel' => $channel                    );            }            $this->ui->outputData($data, $command);        }        return true;    }        function doFileList($command, $options, $params)    {        if (count($params) != 1) {            return $this->raiseError('list-files expects 1 parameter');        }        $reg = &$this->config->getRegistry();        $fp = false;        if (!is_dir($params[0]) && (file_exists($params[0]) || $fp = @fopen($params[0],              'r'))) {            if ($fp) {                fclose($fp);            }            if (!class_exists('PEAR_PackageFile')) {                require_once 'PEAR/PackageFile.php';            }            $pkg = &new PEAR_PackageFile($this->config, $this->_debug);            PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN);            $info = &$pkg->fromAnyFile($params[0], PEAR_VALIDATE_NORMAL);            PEAR::staticPopErrorHandling();            $headings = array('Package File', 'Install Path');            $installed = false;        } else {

⌨️ 快捷键说明

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