Переопределите созданный в функциях PHP

Я хотел бы переопределить определенные функции в PHP, которые уже создаются, например, эхо () или время () - я не должен определять эти функции глобально, только в рамках единственного сценария для тестирования.

Я думаю, что это может быть сделано в Perl, но в PHP - действительно ли это возможно?

20
задан Benjamin 19 November 2014 в 13:35
поделиться

2 ответа

runkit_function_redefine - Заменить определение функции новой реализацией

Примечание: По умолчанию, только функции пользовательского пространства могут быть удалены, переименованы или изменены. Чтобы переопределить внутренние функции , необходимо включить параметр runkit.internal_override в php.ini.

17
ответ дан 30 November 2019 в 00:59
поделиться

Вы также можете проверить

override_function () - Заменяет встроенные функции

из пакета Advanced PHP debugger .

Однако необходимость переопределения собственных функций PHP или языковых операторов должна вызывать тревогу. На мой взгляд, это не должно быть частью вашего производственного кода, если вы не пишете отладчик или аналогичный инструмент.

Другой вариант - использовать http://antecedent.github.io/patchwork

Patchwork - это библиотека PHP, которая позволяет переопределять определяемые пользователем функции и методы во время выполнения, слабо копируя функциональность. runkit_function_redefine в чистом коде PHP 5.3, который, помимо прочего, позволяет заменять статические и частные методы тестовыми двойниками.

Последний не работает для собственных функций

6
ответ дан 30 November 2019 в 00:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: