dongxu8533486 2013-05-11 06:18
浏览 61
已采纳

php扩展用C语言编写的处理程序替换PHP类方法

My level of experience: very comfortable with C, novice to PHP, new to and very frustrated with Zend Engine (no documentation?)

I'm trying to write my first PHP extension, and I'm wondering if the following is even possible.

PHP code illustrating my goal:

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();

Also, I'm aware I could just rewrite foo to call a function exposed by the extension, but that's not interesting to me. I just want to know if the above example (where the PHP class is not aware of and does not cooperate with the extension) is possible.

  • 写回答

1条回答 默认 最新

  • doufei7464 2013-05-11 09:03
    关注

    The runkit extension does this kind of thing: http://www.php.net/manual/en/function.runkit-method-redefine.php

    It's available for download at http://pecl.php.net/package/runkit but there are much recent changes in git://git.php.net/pecl/php/runkit.git

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办