From: Tomas V.V.Cox Date: Thu, 4 Oct 2001 19:05:09 +0000 (+0000) Subject: added method phpVersionIs() to find if a PHP version is minor, greater X-Git-Tag: PRE_PARAMETER_PARSING_API~81 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0786889de0fd4cba0646ab3ab6b1834afc331484;p=php added method phpVersionIs() to find if a PHP version is minor, greater or both (see in-line doc for more info) --- diff --git a/pear/PEAR.php b/pear/PEAR.php index 0c6b0f537a..f5bce41577 100644 --- a/pear/PEAR.php +++ b/pear/PEAR.php @@ -15,6 +15,8 @@ // +----------------------------------------------------------------------+ // | Authors: Sterling Hughes | // | Stig Bakken | +// | Tomas V.V.Cox | +// | | // +----------------------------------------------------------------------+ // // $Id$ @@ -489,6 +491,61 @@ class PEAR } // }}} + + /** + * Converts a php version string to an array + * (supported formats are: X.X.X, X.X.X-dev, X.X.XplX) + * + * @param string $version A valid php version (ie. 4.0.7) + * @return array + * @see PEAR::phpVersionIs() + */ + function _explodePHPVersion($version) + { + @list($v, ) = explode('-', $version); // 4.0.7-dev + list($mayor, $minor, $sub) = explode('.', $v); + @list($sub, $patch) = explode('pl', $sub); // 4.0.14pl1 + if ($patch === null) { + $patch = 0; + } + return array($mayor, $minor, $sub, $patch); + } + + /** + * Find if a version is minor or greater than a given PHP version + * (useful for dependencies checking). + * Usage: + * PEAR::phpVersionIs('4.0.7') => if version 4.0.7 if minor than + * the current version + * PEAR::phpVersionIs(null, '4.0.12pl3') => if version 4.0.12pl3 is greater + * PEAR::phpVersionIs('4.0.5', '4.0.7') => if version is between 4.0.5 and 4.0.7 + * + * @param string $minorthan PHP version that should be minor than the given version + * @param string $greaterthan PHP version that should be greater + * @param string $version The PHP version to compare with (defaults to current) + * + * @return bool If the comparation was successful or not + */ + function phpVersionIs($minorthan = null, $greaterthan = null, $version = PHP_VERSION) + { + $version = PEAR::_explodePHPVersion($version); + $ret = false; + if ($minorthan) { + $minor = PEAR::_explodePHPVersion($minorthan); + for ($i=0; $i < count($version)-1 && $minor[$i] == $version[$i]; $i++); + if ($minor[$i] >= $version[$i]) { + return false; + } + $ret = true; + } + if ($greaterthan) { + $greater = PEAR::_explodePHPVersion($greaterthan); + for ($i=0; $i < count($version)-1 && $greater[$i] == $version[$i]; $i++); + $ret = ($greater[$i] > $version[$i]) ? true : false; + } + return $ret; + } + } // {{{ _PEAR_call_destructors()