Я изучал некоторые уроки по расширению PHP, но не могу найти никакой информации о том, как перегрузить существующую функцию.
Например, я хочу изменить fopen () на что-то вроде
PHP_FUNCTION(fopen)
{
if condition_is_true(condition)
original_fopen();
else
show_error();
}
Как я мог это сделать?Спасибо
PS.Я имею в виду расширение (написанное на C, скомпилированное в .so и включенное в httpd.conf, а не в программу .php)
Редактировать: благодаря решению Гордона найдено решение.
Я скачал пакет PECL для функции rename_function
.Его исходный код привел меня к необходимым выводам:
Существует глобальная хеш-таблица function_table
, которая содержит все указатели для функций на основе их имен.
zend_hash_find
/ zend_hash_add
/ zend_hash_del
позволит мне внести любые изменения, которые я хочу внести в эту таблицу.