Я хотел бы переопределить определенные функции в PHP, которые уже создаются, например, эхо () или время () - я не должен определять эти функции глобально, только в рамках единственного сценария для тестирования.
Я думаю, что это может быть сделано в Perl, но в PHP - действительно ли это возможно?
runkit_function_redefine - Заменить определение функции новой реализацией
Примечание: По умолчанию, только функции пользовательского пространства могут быть удалены, переименованы или изменены. Чтобы переопределить внутренние функции , необходимо включить параметр runkit.internal_override в php.ini.
Вы также можете проверить
override_function ()
- Заменяет встроенные функции
из пакета Advanced PHP debugger .
Однако необходимость переопределения собственных функций PHP или языковых операторов должна вызывать тревогу. На мой взгляд, это не должно быть частью вашего производственного кода, если вы не пишете отладчик или аналогичный инструмент.
Другой вариант - использовать http://antecedent.github.io/patchwork
Patchwork - это библиотека PHP, которая позволяет переопределять определяемые пользователем функции и методы во время выполнения, слабо копируя функциональность.
runkit_function_redefine
в чистом коде PHP 5.3, который, помимо прочего, позволяет заменять статические и частные методы тестовыми двойниками.
Последний не работает для собственных функций