У меня есть функция, которая делает HTTP-запросы с cURL, которая возвращается к file_get_contents()
если cURL недоступен в системе.
Я хотел бы написать модульные тесты для этой функции (используя PHPUnit), где cURL доступен для некоторых тестов и недоступен для других.
Можно ли программно отключить функции PHP, такие как curl_init()
?
Я знаю, что могу использовать параметр disable_functions
в php.ini, но я надеялся найти способ проведения модульных тестов, не перенастраивая PHP между прогонами.
Вы можете использовать runkit_function_remove
для удаления какой-либо определенной функции, я думаю:
runkit_function_remove('curl_init');
И, согласно документации:
Примечание. По умолчанию только функции пользовательского пространства могут быть удалены, переименованы или изменены. Чтобы переопределить внутренние функции, вы должны включить параметр
runkit.internal_override
вphp.ini
.