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

📄 registry.php

📁 php-4.4.7学习linux时下载的源代码
💻 PHP
📖 第 1 页 / 共 5 页
字号:
            return false;        }        $fp = $this->_openPackageFile($package, 'w');        if ($fp === null) {            return false;        }        if (is_object($info)) {            $info = $info->toArray();        }        $info['_lastmodified'] = time();        $newinfo = $info;        if ($merge) {            $info = array_merge($oldinfo, $info);        } else {            $diff = $info;        }        fwrite($fp, serialize($info));        $this->_closePackageFile($fp);        if (isset($newinfo['filelist'])) {            $this->_rebuildFileMap();        }        return true;    }    /**     * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2     * @return bool     * @access private     */    function _updatePackage2($info)    {        if (!$this->_packageExists($info->getPackage(), $info->getChannel())) {            return false;        }        $fp = $this->_openPackageFile($info->getPackage(), 'w', $info->getChannel());        if ($fp === null) {            return false;        }        $save = $info;        $info = $save->getArray(true);        $info['_lastmodified'] = time();        fwrite($fp, serialize($info));        $this->_closePackageFile($fp);        $this->_rebuildFileMap();        return true;    }    /**     * @param string Package name     * @param string Channel name     * @return PEAR_PackageFile_v1|PEAR_PackageFile_v2|null     * @access private     */    function &_getPackage($package, $channel = 'pear.php.net')    {        $info = $this->_packageInfo($package, null, $channel);        if ($info === null) {            return $info;        }        $a = $this->_config;        if (!$a) {            $this->_config = &new PEAR_Config;            $this->_config->set('php_dir', $this->statedir);        }        if (!class_exists('PEAR_PackageFile')) {            require_once 'PEAR/PackageFile.php';        }        $pkg = &new PEAR_PackageFile($this->_config);        $pf = &$pkg->fromArray($info);        return $pf;    }    /**     * @param string channel name     * @param bool whether to strictly retrieve channel names     * @return PEAR_ChannelFile|PEAR_Error     * @access private     */    function &_getChannel($channel, $noaliases = false)    {        $ch = false;        if ($this->_channelExists($channel, $noaliases)) {            $chinfo = $this->_channelInfo($channel, $noaliases);            if ($chinfo) {                if (!class_exists('PEAR_ChannelFile')) {                    require_once 'PEAR/ChannelFile.php';                }                $ch = &PEAR_ChannelFile::fromArrayWithErrors($chinfo);            }        }        if ($ch) {            if ($ch->validate()) {                return $ch;            }            foreach ($ch->getErrors(true) as $err) {                $message = $err['message'] . "\n";            }            $ch = PEAR::raiseError($message);            return $ch;        }        if ($this->_getChannelFromAlias($channel) == 'pear.php.net') {            // the registry is not properly set up, so use defaults            if (!class_exists('PEAR_ChannelFile')) {                require_once 'PEAR/ChannelFile.php';            }            $pear_channel = new PEAR_ChannelFile;            $pear_channel->setName('pear.php.net');            $pear_channel->setAlias('pear');            $pear_channel->setSummary('PHP Extension and Application Repository');            $pear_channel->setDefaultPEARProtocols();            $pear_channel->setBaseURL('REST1.0', 'http://pear.php.net/rest/');            $pear_channel->setBaseURL('REST1.1', 'http://pear.php.net/rest/');            return $pear_channel;        }        if ($this->_getChannelFromAlias($channel) == 'pecl.php.net') {            // the registry is not properly set up, so use defaults            if (!class_exists('PEAR_ChannelFile')) {                require_once 'PEAR/ChannelFile.php';            }            $pear_channel = new PEAR_ChannelFile;            $pear_channel->setName('pecl.php.net');            $pear_channel->setAlias('pecl');            $pear_channel->setSummary('PHP Extension Community Library');            $pear_channel->setDefaultPEARProtocols();            $pear_channel->setBaseURL('REST1.0', 'http://pecl.php.net/rest/');            $pear_channel->setBaseURL('REST1.1', 'http://pecl.php.net/rest/');            $pear_channel->setValidationPackage('PEAR_Validator_PECL', '1.0');            return $pear_channel;        }        if ($this->_getChannelFromAlias($channel) == '__uri') {            // the registry is not properly set up, so use defaults            if (!class_exists('PEAR_ChannelFile')) {                require_once 'PEAR/ChannelFile.php';            }            $private = new PEAR_ChannelFile;            $private->setName('__uri');            $private->addFunction('xmlrpc', '1.0', '****');            $private->setSummary('Pseudo-channel for static packages');            return $private;        }        return $ch;    }    // {{{ packageExists()    /**     * @param string Package name     * @param string Channel name     * @return bool     */    function packageExists($package, $channel = 'pear.php.net')    {        if (PEAR::isError($e = $this->_lock(LOCK_SH))) {            return $e;        }        $ret = $this->_packageExists($package, $channel);        $this->_unlock();        return $ret;    }    // }}}    // {{{ channelExists()    /**     * @param string channel name     * @param bool if true, then aliases will be ignored     * @return bool     */    function channelExists($channel, $noaliases = false)    {        if (PEAR::isError($e = $this->_lock(LOCK_SH))) {            return $e;        }        $ret = $this->_channelExists($channel, $noaliases);        $this->_unlock();        return $ret;    }    // }}}    // {{{ isAlias()    /**     * Determines whether the parameter is an alias of a channel     * @param string     * @return bool     */    function isAlias($alias)    {        if (PEAR::isError($e = $this->_lock(LOCK_SH))) {            return $e;        }        $ret = $this->_isChannelAlias($alias);        $this->_unlock();        return $ret;    }    // }}}    // {{{ packageInfo()    /**     * @param string|null     * @param string|null     * @param string     * @return array|null     */    function packageInfo($package = null, $key = null, $channel = 'pear.php.net')    {        if (PEAR::isError($e = $this->_lock(LOCK_SH))) {            return $e;        }        $ret = $this->_packageInfo($package, $key, $channel);        $this->_unlock();        return $ret;    }    // }}}    // {{{ channelInfo()    /**     * Retrieve a raw array of channel data.     *     * Do not use this, instead use {@link getChannel()} for normal     * operations.  Array structure is undefined in this method     * @param string channel name     * @param bool whether to strictly retrieve information only on non-aliases     * @return array|null|PEAR_Error     */    function channelInfo($channel = null, $noaliases = false)    {        if (PEAR::isError($e = $this->_lock(LOCK_SH))) {            return $e;        }        $ret = $this->_channelInfo($channel, $noaliases);        $this->_unlock();        return $ret;    }    // }}}    /**     * @param string     */    function channelName($channel)    {        if (PEAR::isError($e = $this->_lock(LOCK_SH))) {            return $e;        }        $ret = $this->_getChannelFromAlias($channel);        $this->_unlock();        return $ret;    }    /**     * @param string     */    function channelAlias($channel)    {        if (PEAR::isError($e = $this->_lock(LOCK_SH))) {            return $e;        }        $ret = $this->_getAlias($channel);        $this->_unlock();        return $ret;    }    // {{{ listPackages()    function listPackages($channel = false)    {        if (PEAR::isError($e = $this->_lock(LOCK_SH))) {            return $e;        }        $ret = $this->_listPackages($channel);        $this->_unlock();        return $ret;    }    // }}}    // {{{ listAllPackages()    function listAllPackages()    {        if (PEAR::isError($e = $this->_lock(LOCK_SH))) {            return $e;        }        $ret = $this->_listAllPackages();        $this->_unlock();        return $ret;    }    // }}}    // {{{ listChannel()    function listChannels()    {        if (PEAR::isError($e = $this->_lock(LOCK_SH))) {            return $e;        }        $ret = $this->_listChannels();        $this->_unlock();        return $ret;    }    // }}}    // {{{ addPackage()    /**     * Add an installed package to the registry     * @param string|PEAR_PackageFile_v1|PEAR_PackageFile_v2 package name or object     *               that will be passed to {@link addPackage2()}     * @param array package info (parsed by PEAR_Common::infoFrom*() methods)     * @return bool success of saving     */    function addPackage($package, $info)    {        if (is_object($info)) {            return $this->addPackage2($info);        }        if (PEAR::isError($e = $this->_lock(LOCK_EX))) {            return $e;        }        $ret = $this->_addPackage($package, $info);        $this->_unlock();        if ($ret) {            if (!class_exists('PEAR_PackageFile_v1')) {                require_once 'PEAR/PackageFile/v1.php';            }            $pf = new PEAR_PackageFile_v1;            $pf->setConfig($this->_config);            $pf->fromArray($info);            $this->_dependencyDB->uninstallPackage($pf);            $this->_dependencyDB->installPackage($pf);        }        return $ret;    }    // }}}    // {{{ addPackage2()    function addPackage2($info)    {        if (!is_object($info)) {            return $this->addPackage($info['package'], $info);        }        if (PEAR::isError($e = $this->_lock(LOCK_EX))) {            return $e;        }        $ret = $this->_addPackage2($info);        $this->_unlock();        if ($ret) {            $this->_dependencyDB->uninstallPackage($info);            $this->_dependencyDB->installPackage($info);        }        return $ret;    }    // }}}    // {{{ updateChannel()    /**     * For future expandibility purposes, separate this     * @param PEAR_ChannelFile     */    function updateChannel($channel, $lastmodified = null)    {        if ($channel->getName() == '__uri') {            return false;        }        return $this->addChannel($channel, $lastmodified, true);    }    // }}}    // {{{ deleteChannel()    /**     * Deletion fails if there are any packages installed from the channel     * @param string|PEAR_ChannelFile channel name     * @return boolean|PEAR_Error True on deletion, false if it doesn't exist     */    function deleteChannel($channel)    {        if (PEAR::isError($e = $this->_lock(LOCK_EX))) {            return $e;        }        $ret = $this->_deleteChannel($channel);        $this->_unlock();        if ($ret && is_a($this->_config, 'PEAR_Config')) {            $this->_config->setChannels($this->listChannels());        }        return $ret;    }    // }}}    // {{{ addChannel()    /**     * @param PEAR_ChannelFile Channel object     * @param string Last-Modified header from HTTP for caching     * @return boolean|PEAR_Error True on creation, false if it already exists     */    function addChannel($channel, $lastmodified = false, $update = false)    {        if (!is_a($channel, 'PEAR_ChannelFile')) {            return false;        }        if (!$channel->validate()) {

⌨️ 快捷键说明

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