Отладка чужого PHP-кода, я хотел бы выборочно переопределить один из их классов.Класс включается через:
require_once('classname.php');
Но это появляется в разных местах приложения.Я бы лучше «смоделировал» require_once
, чтобы он никогда не запускался вообще.Т.е. просто определите class classname
как я хочу.Затем, в следующий раз, когда файл будет require_once
'редактирован, он будет помечен как уже загруженный и, следовательно, не перезагружен.
Я могу создать собственный файл classname.php, но я былучше оставить тестирование, которое я выполняю, в одном файле, так как я делаю это, возможно, для многих классов, и я хотел бы упростить контроль над переопределением.
В Perl, что бы я хотелсделать было бы:
$INC{'classname.pm'} = 1;
Есть ли способ получить доступ к PHP-эквиваленту Perl %INC
?
Обновление : постоянно удивляется тому, что PHP не делаетпозвольте вам сделать ...
Мой обходной путь должен был использовать runkit runkit_method_redefine
.Я загружаю классы, которые пытался предотвратить загрузкой, а затем переопределяю все методы, которые я пытался «смоделировать», например:
require_once('classname.php');
runkit_method_redefine('classname','method','$params','return "testdata";');