php类成员函数二次定义,动态定义类成员函数
应用场景:
1.动态载入类成员(一些swoole框架,修改的代码需要重载服务器,可以动态多次载入扩展函数文件)
2.团队开发写同一个文件的避免冲突,自己单独可以一个扩展文件;
3.一个类的代码太多太多,将一些成员函数分解到多个文件中;
<?php
class user{
static $funcs=array();
static function ext($method,$func){self::$funcs[$method]=$func;}
//调用一个不存在的方法
function __call($func, $args) {
// //可以根据类名,函数名,定义一个规则去加载文件/extgo/class.func.ext.php
if(isset(self::$funcs[$func])){
$classFunc=self::$funcs[$func];
return $classFunc($this);
}
echo "{$func}方法真的真的真的不存了!";
}
/////////////////////////////////其他的一些方法///////////////////////////////////
var $idx=0;
function gotest(){
$this->idx++;
echo "user.test:{$this->idx}\r\n";
}
}
//1.为user类扩展一个方法
user::ext('add',function($pthis){
echo "exec add\r\n";
$pthis->idx++;
$pthis->gotest();
});
//2.调用user类的add方法
$c=new user();
$c->add();
//3.还可以再次定义
user::ext('add',function($pthis){
echo 'exec add2\r\n';
$pthis->idx=20;
$pthis->gotest();
});
//4.调用user类的add方法
$c->add();
- php类成员函数中访问类外定义的变量
- 类的成员函数参数定义为类的对象(匿名对象)
- C++:如何声明和定义成员函数
- 定义一个哺乳动物Mammal类,再由此派生出狗Dog类,二者都定义 Speak()成员函数,基类中定义为虚函数,定义一个Dog类的对象,调用Speak函数,观察运行结果
- C++普通成员函数的重定义
- 类成员声明与定义前加inline的区别(C++ inline 函数)
- C++中,如何定义和使用指向成员函数的指针
- 在类外定义的函数,被成员函数调用时,报运行时错误error LNK2005:已经在 classinfo.obj 中定义
- C++使用static的错误:无法解析的外部符号、“static”不应在文件范围内定义的成员函数上使用 .
- 第四周上机任务--任务一--用VS2008设计一个三角形类--给各个成员函数定义
- static"不应在文件范围内定义的成员函数上使用
- (原创)c#学习笔记10--定义类成员05--部分方法定义
- 定义圆类Circle,数据成员有半径radius,成员函数有默认构造函数(默认半径为10)、构造函数、计算圆面积、圆周长以及输出函数,分别构造默认对象和半径为15的对象,输出各对象的周长与面积。
- Python中定义“私有”成员变量和成员函数
- C++使用static的错误:无法解析的外部符号、“static”不应在文件范围内定义的成员函数上使用
- Effective C++ Item 46 当需要投你非成员函数定义模板
- COCOS2D-HTML5 开发之二】cocos2d-html5项目定义成员,局部变量,函数笔记随笔
- C++中各种数据成员及成员函数的定义及使用
- 【8.17】建立一个用来实现求3个数和的类模板(将成员函数定义在类模板的内部),并写出调用此类模板的完整程序。
- [C++学习笔记14]动态创建对象(定义静态方法实现在map查找具体类名对应的创建函数,并返回函数指针,map真是一个万能类)good