Я использую hack для разрешения поздней статической привязки в php версии 5.2 (найдено here).get_called_class hack не работает с eval-кодом
У меня есть следующий в моем коде:
# db_record.php
$ac = "ForumThread";
$objects = $ac::find("all");
Это не будет работать в PHP 5.2 для какой-то причины, так что я сделал это:
# db_record.php
$ac = "ForumThread";
eval("\$objects = {$ac}::find('all');");
этого с другой стороны, не будет работа с функцией get_called_class
. Я получаю сообщение об ошибке, что функция file
не может прочитать обведенный раздел кода.
Я полностью согласен с тем, что не нужно использовать 'eval', но так бывает, что он работает на моем собственном поле с php 5.3, но не на сервере с 5.2. Запуск будет вызывать эту ошибку: Синтаксическая ошибка: синтаксическая ошибка, неожиданный T_PAAMAYIM_NEKUDOTAYIM в /home/virtual/atanea.dk/vendor/framework/lib/db_record.php на линии 89 Фатальная ошибка: Вызов функции члена правопреемника() на не-объекте в /home/virtual/atanea.dk/vendor/framework/lib/action_view.php в строке 87' – Ekampp
И о том, почему я не использую 5.3, является то, что моя хостинговая компания не поддерживает он еще с аргументом о том, что он все еще нестабилен. Поэтому я вынужден делать все взломы. – Ekampp
Все еще нестабильно? В течение этого месяца он отсутствовал. Ваш хозяин полон этого. Что касается ошибки, попробовали ли вы использовать call_user_func? 'call_user_func (array ($ ac, 'find'), 'all')' * должен * вызывать статический метод 'find' для имени класса, содержащегося в' $ ac', с параметром '' all''. (Это было включено в мой ответ.) – Charles