Develar
Новичок
Переопределение protected свойства из публичной части самим интепретатором. Почему?
Я привык читать руководства и не писать на форумах, решая сам свои проблемы, но тут я не могу удержаться и спрашиваю скорее из любопытства, а не желания решить проблему.
Согласно теории, если в мы классе определяем static protected $variable никто не сможет изменить данную переменную вне класса - только посредством методов доступа.
определение свойства
определение метода доступа
в коде вне класса
если мы вызов ObjectPath::getType() не обрамляем крыглыми скобками - интерпретатор выдаст ошибку - все правильно, ведь array_pop принимает только по ссылке, а не по значению. А вот если обрамляем - вот это самое загодочное и смешное - защищенное свойство класса переопределяется вне класса - из массива ObjectPath::type удаляется последний элемент.
Скажите, это недокументированная возможность или баг? Или я чего-то не понимаю?
PHP Version 5.1.0
Build Date Nov 23 2005 23:54:40
System Windows NT 5.1 build 2600
Server API CGI/FastCGI
P.S. Вопрос "зачем это нужно" задавать не надо - поведение выше есть факт и мне хочется понять его причины.
Я привык читать руководства и не писать на форумах, решая сам свои проблемы, но тут я не могу удержаться и спрашиваю скорее из любопытства, а не желания решить проблему.
Согласно теории, если в мы классе определяем static protected $variable никто не сможет изменить данную переменную вне класса - только посредством методов доступа.
определение свойства
PHP:
static protected $type = array();
PHP:
/**
* Возвращает одну или все вершины пути, выраженного в типе
* @param int $level_number = NULL Номер уровня вершины
* @return mixed
*/
static function getType($level_number = NULL)
{
if (isset($level_number))
{
return self::$type[$level_number];
}
else
{
return self::$type;
}
}
PHP:
$object_type = array_pop((ObjectPath::getType()));
Скажите, это недокументированная возможность или баг? Или я чего-то не понимаю?
PHP Version 5.1.0
Build Date Nov 23 2005 23:54:40
System Windows NT 5.1 build 2600
Server API CGI/FastCGI
P.S. Вопрос "зачем это нужно" задавать не надо - поведение выше есть факт и мне хочется понять его причины.

rint_r() should not be called statically in e:\home\airs\www\example.php5 on line 19