永发信息网

PHP中如何获得当前类的名称,而实例化后获取子类的名称

答案:3  悬赏:70  手机版
解决时间 2021-04-06 19:57
class all{ function all() { return __CLASS__; }} class my extends all{ }print my::all(); 这样获得的是父类的名称,我想获得 my ,请问用什么函数啊?
最佳答案
通过 get_declared_classes 获取所有的类,
然后循环这个array,再通过 instance_of 检测是否是你指定类的子类,然后push到一个数组中.
全部回答
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
这是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关键字)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
《西游记》中唐僧怎样称呼沙僧,谁能答出来呢
G6pD活性0.3是什么意思?
100以内11,13,17,19的倍数。
结婚后继承的房子有配偶一半吗?
胃炎伴糜烂吃什么药,浅表性胃炎伴糜烂吃什么
如图,BC为⊙O的直径,弦AC=3cm,AB=4cm,AD
在深圳五八同城短租房是不是骗人的
草帽哥现在怎么样
醇奶过期怎么做酸奶
Heaven Is For Real 这句话与heaven is real
彩虹岛100级的普通精灵石在哪里买
带有耐人寻味的句子,一些耐人寻味的句子
单选题下列铁路不属于山西省煤炭外运干线的是
跪求,急:后台登录的用户中,当登录的用户为
你会外汇图形技术分析吗
推荐资讯
电脑k歌是混响器好还是声卡好。哪个音质更纯
顺丰快递昨天晚上21点从广州发出今天能到海城
KB960耐磨焊丝怎么样
小花今年12岁了,可她为什么只过了3次生日,为
如何看屏蔽微信朋友圈,微信怎么屏蔽人.朋友圈
0到1000数字中有多少个9
小狗一岁多了眼睛上覆盖一层青蓝色薄膜
帮办是什么职位,皇太后的姐姐是什么职位?
什么是进口药品?
球阀打压差是什么意思,请高人指点,谢谢!
回收1吨废纸可以生产出800千克再生纸,并能节
Being blind is something most people can
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?