php类成员函数二次定义,动态定义类成员函数
这是一个很怪异的想法:class类定义之后,甚至编译载入内存之后,还有没有办法增加其成员函数,改写其已有成员函数逻辑!意义不是特别大,只是觉得很有意思, php太神奇了!!! 【应用场景】 1) 动态载入类成员函数体(一些常住内存框架,修改的代码需要重载服务,可以动态多次载入扩展函数文件) 2) 团队开发写同一个类文件的避免冲突,自己单独可以一个扩展文件; 3) 一个类的代码太多太多,将一些成员函数分解到多个文件中实现; 4) php类运行中按需加载成员函数体内容; 【实现原理】 用类的静态变量来保存扩展的函数,用__call魔术方法来实现扩展函数的真实调用; 【例子】 <?php # # 定义一个user类 # class user{ static $funcs=array(); #用于动态扩展或覆盖类的成员函数名及函数体 static function ext($method,$func){self::$funcs[$method]=$func;} //调用一个不存在的方法 function __call($func, $args) { //可以考虑根据函数名载入定义文件 user.ext.{func}.php if(isset(self::$funcs[$func])){ $classFunc=self::$funcs[$func]; array_unshift($args,