2011-01-06 3 views
3

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

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

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

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

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

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

Спасибо!

ответ

1

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

+0

Очень разумно сказал:] Я согласен с тем, что на данный момент это моя собственная спецификация. Я всегда могу использовать небольшие магические команды linux, соединенные вместе, чтобы заменить весь код статическими вызовами, если это необходимо (просто удалив '$' и заменив '->' на '::'. Спасибо! – Qix

Смежные вопросы