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

📄 dependency2.php

📁 php-4.4.7学习linux时下载的源代码
💻 PHP
📖 第 1 页 / 共 4 页
字号:
                PEAR::pushErrorHandling(PEAR_ERROR_RETURN);                $ret = $this->validateExtensionDependency($subdep, $required);                PEAR::popErrorHandling();                if (!PEAR::isError($ret)) {                    return true;                }            }        }        if ($this->_state == PEAR_VALIDATE_INSTALLING) {            return $this->_validatePackageInstall($dep, $required, $depv1);        }        if ($this->_state == PEAR_VALIDATE_DOWNLOADING) {            return $this->_validatePackageDownload($dep, $required, $params, $depv1);        }    }    function _validatePackageDownload($dep, $required, $params, $depv1 = false)    {        $dep['package'] = $dep['name'];        if (isset($dep['uri'])) {            $dep['channel'] = '__uri';        }        $depname = $this->_registry->parsedPackageNameToString($dep, true);        $found = false;        foreach ($params as $param) {            if ($param->isEqual(                  array('package' => $dep['name'],                        'channel' => $dep['channel']))) {                $found = true;                break;            }            if ($depv1 && $dep['channel'] == 'pear.php.net') {                if ($param->isEqual(                  array('package' => $dep['name'],                        'channel' => 'pecl.php.net'))) {                    $found = true;                    break;                }            }        }        if (!$found && isset($dep['providesextension'])) {            foreach ($params as $param) {                if ($param->isExtension($dep['providesextension'])) {                    $found = true;                    break;                }            }        }        if ($found) {            $version = $param->getVersion();            $installed = false;            $downloaded = true;        } else {            if ($this->_registry->packageExists($dep['name'], $dep['channel'])) {                $installed = true;                $downloaded = false;                $version = $this->_registry->packageinfo($dep['name'], 'version',                    $dep['channel']);            } else {                if ($dep['channel'] == 'pecl.php.net' && $this->_registry->packageExists($dep['name'],                      'pear.php.net')) {                    $installed = true;                    $downloaded = false;                    $version = $this->_registry->packageinfo($dep['name'], 'version',                        'pear.php.net');                } else {                    $version = 'not installed or downloaded';                    $installed = false;                    $downloaded = false;                }            }        }        $extra = $this->_getExtraString($dep);        if (isset($dep['exclude'])) {            if (!is_array($dep['exclude'])) {                $dep['exclude'] = array($dep['exclude']);            }        }        if (!isset($dep['min']) && !isset($dep['max']) &&              !isset($dep['recommended']) && !isset($dep['exclude'])) {            if ($installed || $downloaded) {                $installed = $installed ? 'installed' : 'downloaded';                if (isset($dep['conflicts'])) {                    if ($version) {                        $rest = ", $installed version is " . $version;                    } else {                        $rest = '';                    }                    if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) {                        return $this->raiseError('%s conflicts with package "' . $depname . '"' .                            $extra . $rest);                    } else {                        return $this->warning('warning: %s conflicts with package "' . $depname . '"' .                            $extra . $rest);                    }                }                return true;            } else {                if (isset($dep['conflicts'])) {                    return true;                }                if ($required) {                    if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) {                        return $this->raiseError('%s requires package "' . $depname . '"' .                            $extra);                    } else {                        return $this->warning('warning: %s requires package "' . $depname . '"' .                            $extra);                    }                } else {                    return $this->warning('%s can optionally use package "' . $depname . '"' .                        $extra);                }            }        }        if (!$installed && !$downloaded) {            if (isset($dep['conflicts'])) {                return true;            }            if ($required) {                if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) {                    return $this->raiseError('%s requires package "' . $depname . '"' .                        $extra);                } else {                    return $this->warning('warning: %s requires package "' . $depname . '"' .                        $extra);                }            } else {                return $this->warning('%s can optionally use package "' . $depname . '"' .                    $extra);            }        }        $fail = false;        if (isset($dep['min'])) {            if (version_compare($version, $dep['min'], '<')) {                $fail = true;            }        }        if (isset($dep['max'])) {            if (version_compare($version, $dep['max'], '>')) {                $fail = true;            }        }        if ($fail && !isset($dep['conflicts'])) {            $installed = $installed ? 'installed' : 'downloaded';            $dep['package'] = $dep['name'];            $dep = $this->_registry->parsedPackageNameToString($dep, true);            if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) {                return $this->raiseError('%s requires package "' . $depname . '"' .                    $extra . ", $installed version is " . $version);            } else {                return $this->warning('warning: %s requires package "' . $depname . '"' .                    $extra . ", $installed version is " . $version);            }        } elseif ((isset($dep['min']) || isset($dep['max'])) && !$fail &&              isset($dep['conflicts']) && !isset($dep['exclude'])) {            $installed = $installed ? 'installed' : 'downloaded';            if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) {                return $this->raiseError('%s conflicts with package "' . $depname . '"' . $extra .                    ", $installed version is " . $version);            } else {                return $this->warning('warning: %s conflicts with package "' . $depname . '"' .                    $extra . ", $installed version is " . $version);            }        }        if (isset($dep['exclude'])) {            $installed = $installed ? 'installed' : 'downloaded';            foreach ($dep['exclude'] as $exclude) {                if (version_compare($version, $exclude, '==') && !isset($dep['conflicts'])) {                    if (!isset($this->_options['nodeps']) &&                          !isset($this->_options['force'])) {                        return $this->raiseError('%s is not compatible with ' .                            $installed . ' package "' .                            $depname . '" version ' .                            $exclude);                    } else {                        return $this->warning('warning: %s is not compatible with ' .                            $installed . ' package "' .                            $depname . '" version ' .                            $exclude);                    }                } elseif (version_compare($version, $exclude, '!=') && isset($dep['conflicts'])) {                    $installed = $installed ? 'installed' : 'downloaded';                    if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) {                        return $this->raiseError('%s conflicts with package "' . $depname . '"' .                            $extra . ", $installed version is " . $version);                    } else {                        return $this->warning('warning: %s conflicts with package "' . $depname . '"' .                            $extra . ", $installed version is " . $version);                    }                }            }        }        if (isset($dep['recommended'])) {            $installed = $installed ? 'installed' : 'downloaded';            if (version_compare($version, $dep['recommended'], '==')) {                return true;            } else {                if (!$found && $installed) {                    $param = $this->_registry->getPackage($dep['name'], $dep['channel']);                }                if ($param) {                    $found = false;                    foreach ($params as $parent) {                        if ($parent->isEqual($this->_currentPackage)) {                            $found = true;                            break;                        }                    }                    if ($found) {                        if ($param->isCompatible($parent)) {                            return true;                        }                    } else { // this is for validPackage() calls                        $parent = $this->_registry->getPackage($this->_currentPackage['package'],                            $this->_currentPackage['channel']);                        if ($parent !== null) {                            if ($param->isCompatible($parent)) {                                return true;                            }                        }                    }                }                if (!isset($this->_options['nodeps']) && !isset($this->_options['force']) &&                      !isset($this->_options['loose'])) {                    return $this->raiseError('%s dependency package "' . $depname .                        '" ' . $installed . ' version ' . $version .                         ' is not the recommended version ' . $dep['recommended'] .                        ', but may be compatible, use --force to install');                } else {                    return $this->warning('warning: %s dependency package "' . $depname .                        '" ' . $installed . ' version ' . $version .                        ' is not the recommended version ' . $dep['recommended']);                }            }        }        return true;    }    function _validatePackageInstall($dep, $required, $depv1 = false)    {        return $this->_validatePackageDownload($dep, $required, array(), $depv1);    }    /**     * Verify that uninstalling packages passed in to command line is OK.     *     * @param PEAR_Installer $dl     * @return PEAR_Error|true     */    function validatePackageUninstall(&$dl)    {        if (PEAR::isError($this->_dependencydb)) {            return $this->_dependencydb;        }        $params = array();        // construct an array of "downloaded" packages to fool the package dependency checker        // into using these to validate uninstalls of circular dependencies        $downloaded = &$dl->getUninstallPackages();        foreach ($downloaded as $i => $pf) {            if (!class_exists('PEAR_Downloader_Package')) {                require_once 'PEAR/Downloader/Package.php';            }            $dp = &new PEAR_Downloader_Package($dl);            $dp->setPackageFile($downloaded[$i]);            $params[$i] = &$dp;        }        $deps = $this->_dependencydb->getDependentPackageDependencies($this->_currentPackage);        $fail = false;        if ($deps) {            foreach ($deps as $channel => $info) {                foreach ($info as $package => $ds) {                    foreach ($ds as $d) {                        $d['dep']['package'] = $d['dep']['name'];                        $checker = &new PEAR_Dependency2($this->_config, $this->_options,                            array('channel' => $channel, 'package' => $package), $this->_state);                        $dep = $d['dep'];                        $required = $d['type'] == 'required';                        $ret = $checker->_validatePackageUninstall($dep, $required, $params, $dl);                        if (is_array($ret)) {                            $dl->log(0, $ret[0]);                        } elseif (PEAR::isError($ret)) {                            $dl->log(0, $ret->getMessage());                            $fail = true;                        }                    }                }            }        }        if ($fail) {            if (isset($this->_options['nodeps']) || isset($this->_options['force'])) {                return $this->warning(                    'warning: %s should not be uninstalled, other installed packages depend ' .                    'on this package');            } else {                return $this->raiseError(                    '%s cannot be uninstalled, other installed packages depend on this package');            }        }        return true;    }

⌨️ 快捷键说明

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