Каркас CodeIgniter имеет ужасную функцию is_php().Статические переменные, объявленные за пределами класса
/**
* Determines if the current version of PHP is greater then the supplied value
*
* Since there are a few places where we conditionally test for PHP > 5
* we'll set a static variable.
*
* @access public
* @param string
* @return bool TRUE if the current version is $version or higher
*/
if (! function_exists('is_php'))
{
function is_php($version = '5.0.0')
{
static $_is_php;
$version = (string)$version;
if (! isset($_is_php[$version]))
{
$_is_php[$version] = (version_compare(PHP_VERSION, $version) < 0) ? FALSE : TRUE;
}
return $_is_php[$version];
}
}
Обратите внимание, что переменная $_is_php
определяется static
. Эта функция не определена ни в одном классе, поэтому я не вижу, чтобы определение static
было правильным синтаксисом, даже если оно (предположительно) имеет (предполагаемый) предполагаемый эффект от изменения переменной в вызовах функций. Я не вижу этого использования, упомянутого в the PHP documentaion. Где это неклассовое использование ключевого слова static
? Является ли это недокументированной функцией PHP и, возможно, не поддерживается и, следовательно, не следует полагаться?
Эй, там долгое время нет! Спасибо, справочная страница, на которую вы ссылаетесь, суммирует ее, интересно, почему Google не возвращает ее при поиске статичности PHP. – dotancohen