PHP中如何获得当前类的名称,而实例化后获取子类的名称
答案:3 悬赏:70 手机版
解决时间 2021-04-06 19:57
- 提问者网友:原来太熟悉了会陌生
- 2021-04-05 23:57
class all{ function all() { return __CLASS__; }} class my extends all{ }print my::all(); 这样获得的是父类的名称,我想获得 my ,请问用什么函数啊?
最佳答案
- 五星知识达人网友:轮獄道
- 2021-04-06 01:24
通过 get_declared_classes 获取所有的类,
然后循环这个array,再通过 instance_of 检测是否是你指定类的子类,然后push到一个数组中.
然后循环这个array,再通过 instance_of 检测是否是你指定类的子类,然后push到一个数组中.
全部回答
- 1楼网友:狂恋
- 2021-04-06 04:11
class a{
var $curins;
function __construct(){
$this->curins= get_class($this);
}
}
class b extends a{
function __construct(){
parent::__construct();
echo $this->curins;
}
}
new b(); //这里会输出b
- 2楼网友:woshuo
- 2021-04-06 02:33
这是php静态数据过早绑定的问题(即子类的all方法是从父类中继承过来的,__CLASS__常量过早的绑定成了父类名),解决这个问题:方法一:class all{ function all() { return __CLASS__; }} class my extends all{ function all() { return __CLASS__; }}//子类定义同名的方法(这其实就是覆盖了父类的方法,让__CLASS__绑定为自己的类名)echo my::all();
方法二:class all{ function all() { return get_class($this); }} class my extends all{}$my = new my();//非静态调用是不存在过早绑定的情况的。echo $my->all();
这个可以看看php5.3.0版本之后的静态迟绑定相关信息(static关键字)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯