PHP: альтернатива __callStatic для 5.2.x - PullRequest
3 голосов
/ 07 января 2011

Итак, у меня есть хостинг, который отказывается обновляться до PHP 5.3 (что раздражает, но в то же время неплохо; я гибок), но единственное, что меня действительно раздражает, - это отсутствие __callStatic в наличии.

У меня загружены модули, которые я хочу объединить в один класс (т.е. есть класс, который загружает модули, а затем обращается к функциям этих модулей через вызовы метода __callStatic основного класса), но когда я загрузилс локального сервера тестирования на мой сервер, очевидно, метод __callStatic не работал.

Есть ли альтернатива, которая все еще статическая?Мне нравится, когда чистый код ищет двойное двоеточие (то есть registry::some_func()) вместо $registry->some_func().

Еще один минус в том, что теперь я вынужден использовать ключевое слово global в функциях(что по моим собственным предпочтениям очень, очень грязно).

Код также был чрезвычайно быстрым, используя статические методы вместо нестатических, и, в свою очередь, намного более чистым.

Также: Я думал о том, чтобы написать метод __callStatic как обычно с 5.2, а затем явно вызывать методы, например registry::__callStatic("some_func"), array("val", "val2", "val3"), и таким образом упростить вещи, даже упрощая их.мигрировать, когда они обновляются до 5.3.Мысли об этом методе?

Спасибо!

1 Ответ

1 голос
/ 07 января 2011

Если единственной причиной желания сделать это является скорость и субъективная привлекательность двойного двоеточия, я бы сказал, что вы должны оценить дао «черточка и скобка», сделать решающий шаг и использовать экземпляры объектов.«Чистый внешний вид кода», о котором вы говорите, похож на штаны Hammer… круто один год, не так круто через несколько лет, когда вы станете старше и мудрее.__callStatic() (IMVHO) - в лучшем случае ненужное незначительное удобство, а в худшем - обходной путь для плохого класса.:)

...