Отказ от ответственности: Да, я вынужден поддерживать PHP 4.3.0.Я знаю, что он мертв.Нет, я не могу обновить его, потому что я имею дело с несколькими серверами, некоторые из которых не имеют доступа su.
Ну, поскольку я не могу использовать self::
, так как это PHP5конкретно, как я должен идти о реализации статики в классе PHP4?Из моего исследования кажется, что я могу по крайней мере использовать ключевое слово static
, кроме как только в контексте функции, я видел другой метод, использующий $ _GLOBALS, но я не думаю, что буду использовать это.
Просто для того, чтобы мы были на одной странице, мне нужно получить доступ к этой статистике PHP5 в 4:
public static $_monthTable = array(
31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
public static $_yearTable = array(
1970 => 0, 1960 => -315619200);
До сих пор я придумал свою собственную функцию, которая в основном устанавливает статическую переменнуюесли один не найден, и я жестко закодировал все свои статические свойстваТем не менее, я не совсем уверен, как я могу ссылаться на эти статические элементы в методе пыльника в том же классе, предполагая, что он не создается, а конструктор не запускается, то есть я не могу использовать $this
.
class DateClass {
function statics( $name = null ) {
static $statics = array();
if ( count( $statics ) == 0 ) {
$statics['months'] = array(
'Jan', 'Feb'
);
}
if ( $name != null && array_key_exists($name, $statics ) ) {
return $statics[$name];
}
}
};
var_dump( DateClass::statics('months') );
Вопрос № 1: Возможно ли это?Должен ли я попробовать использовать другой метод?
Вопрос № 2: Как бы я ссылался на статику из метода в том же классе?Я пытался __CLASS__::statics
, но я думаю, __CLASS__
- это просто строка, поэтому я не вызываю метод.
Примечание: Я буду реализовывать это в рамках, которые будутиспользоваться на Apache2 + / IIS6 +, PHP4.3.0 до PHP 5.2, OSX / Linux / Windows.