跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

在PHP5.2中不要Runkit 给类动态添加新方法

在PHP5.2中不用Runkit 给类动态添加新方法 js中的对象可以动态添加方法. 在 php 5.2中可用runkit 给类添加方法. 而到php5.3,增加了闭包的语法. 可以直接动态添加方法. 由于Runkit 是在PECL中的,一般无法直接使用.所以,在在PHP5.2中,也就受到了限制. 所以,人们说PHP5.2仍不是动态结构语言. 而js中的对象可以动态添加方法,这对于精简代码,减少继承与扩展,对人总有吸引力. 是否真的不能动态添加呢.其实是可以的,只不能人们没有找到实现的方法. 现在我们就讲解一下,如何动态添加: 立即学习 “ PHP免费学习笔记(深入) ”;
lambda[$name] = $func; } //为动态添加的方法增加调用接口 function __call($name,$args){ if (array_key_exists($name,$this->lambda)){ $func = $this->lambda[$name]; return $func($args); } } } //创建对象 $objAcst = new ActiveStruct(); //添加新方法 $objAcst->addFunction('newFunc', '$vars = func_get_args(); return ($vars[0][0].$vars[0][1]);'); //对新方法进行测试 $testResult=$objAcst->newFunc('Hello,',' Php! '); echo($testResult); ?>
? 需要注意的是, 使用这一方式,动态添加的方法,我们不能显式声明变量的个数.而在动态添加的方法内部.要获取传入的参数,只能通过: $vars = func_get_args(); 无论多少个变量,传入的参数均是在$vars[0]中 所以,要了解传入多少个参数,那就需要用 count($vars[0]); 对参数的使用则是: PHP 8.5.5 PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。 下载 $vars[0][0], $vars[0][1], 依次类推. ? 另外的不足,则是,因为是用create_function实现的,所以,代码要写成字串. 其次则是 __call函数使用,会影响效率. ? 尽管如此,却为你能够在虚拟主机的空间,使方法能动态添加成为可能! 所以, 需要时,还是可以用的. ? 当然,如果你有更好的改进办法, 也请你告诉我! ?

相关文章