Расширение php для замены метода класса PHP на обработчик, написанный на C
Мой уровень опыта: очень комфортно с C, новичок в PHP, новичок и очень разочарован в Zend Engine (нет документации?)
Я пытаюсь написать свое первое расширение PHP, и мне интересно, возможно ли следующее.
PHP-код, иллюстрирующий мою цель:
class MyClass
{
public function foo($bar)
{
(stuff that runs extremely slowly in PHP)
return "result";
}
}
$a = new MyClass();
echo "Watch how slow this is: ", $a->foo();
tell_my_custom_php_extension_to_replace_foo_with_my_reimplementation_of_foo_in_c("MyClass");
echo "Wow, now it's wonderfully fast! See: ", $a->foo();
Кроме того, я знаю, что могу просто переписать foo для вызова функции, предоставляемой расширением, но мне это не интересно. Я просто хочу знать, возможен ли приведенный выше пример (где класс PHP не знает и не взаимодействует с расширением).
1 ответ
Решение
Расширение runkit делает такие вещи: http://www.php.net/manual/en/function.runkit-method-redefine.php
Он доступен для скачивания по адресу http://pecl.php.net/package/runkit но в git есть много недавних изменений: //git.php.net/pecl/php/runkit.git