drgdn82648 2011-06-29 13:23
浏览 63
已采纳

如何从静态子方法获取类名

<?php
class MyParent {

    public static function tellSomething() {
        return __CLASS__;
    }
}

class MyChild extends MyParent {

}

echo MyChild::tellSomething();

The code above echos "MyParent". How can i get to name of child class - in this case "MyChild"? If it's possible...

I just simply need to know which child is calling the inherited method.

  • 写回答

2条回答 默认 最新

  • douwa6220 2011-06-29 13:34
    关注

    __CLASS__ is a pseudo-constant, that always refers to the class, where it is defined. With late-static-binding the function get_called_class() were introduced, that resolve the classname during runtime.

    class MyParent {
    
      public static function tellSomething() {
        return get_called_class();
      }
    }
    
    class MyChild extends MyParent {
    
    }
    
    echo MyChild::tellSomething();
    

    (as a sidenote: usually methods don't need to know the class on were they are called)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 opencv图像处理,需要四个处理结果图
  • ¥15 无线移动边缘计算系统中的系统模型
  • ¥15 深度学习中的画图问题
  • ¥15 java报错:使用mybatis plus查询一个只返回一条数据的sql,却报错返回了1000多条
  • ¥15 Python报错怎么解决
  • ¥15 simulink如何调用DLL文件
  • ¥15 关于用pyqt6的项目开发该怎么把前段后端和业务层分离
  • ¥30 线性代数的问题,我真的忘了线代的知识了
  • ¥15 有谁能够把华为matebook e 高通骁龙850刷成安卓系统,或者安装安卓系统
  • ¥188 需要修改一个工具,懂得汇编的人来。