Расширение 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

Другие вопросы по тегам