全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

如何获取当前类名php中CLASS_与self::的区别【指南】

CLASS 和 self::class 均返回定义处的类名,不随继承改变;static::class 支持后期静态绑定,返回实际调用者类名,是获取当前调用类的正确方式。

获取当前类名时 __CLASS__self::class 的行为差异

两者在绝大多数静态上下文中返回相同结果,但本质不同:__CLASS__ 是编译时解析的常量,而 self::class 是运行时解析的类名引用。关键区别出现在继承链中——self::class 始终指向定义该代码的类,__CLASS__ 也一样,所以它们在此场景下表现一致;真正需要区分的是 static::class(后期静态绑定)。

self::class 在继承中不会动态变化

如果你在父类里写 self::class,子类调用它,得到的仍是父类名,不是子类名。这是设计使然,self 绑定的是“当前作用域所在的类”,不是“实际调用的类”。

class ParentClass {
    public static function getName() {
        return self::class; // 始终返回 'ParentClass'
    }
}
class ChildClass extends ParentClass {}
echo ChildClass::getName(); // 输出: ParentClass

想获取实际调用的类名?用 static::class

只有 static::class 支持后期静态绑定(LSB),能反映真实的运行时调用者。这是解决“获取当前实例/调用者类名”问题的正确方式。

  • __CLASS__self::class:都固定为定义处的类名,不可被继承覆盖
  • static::class:在子类中调用时,返回子类名
  • 若在非静态方法中,也可用 get_class($this),但它依赖对象实例,不能用于纯静态上下文
class ParentClass {
    public static function getSelf() { return self::class; }
    public static function getStatic() { return static::class; }
}
class ChildClass extends ParentClass {}
echo ParentClass::getSelf();   // ParentClass
echo ParentClass::getStatic(); // ParentClass
echo ChildClass::getSelf();    // ParentClass ← 注意:没变
echo ChildClass::getStatic();  // ChildClass ← 正确反映调用者

性能与兼容性提醒

__CLASS__ 是魔术常量,PHP 5.0+ 支持;self::classstatic::class 要求 PHP 5.5+。三者性能差异可忽略,但语义不能混用。尤其注意:不要在 trait 中依赖 self::class 期望它代表使用该 trait 的类——它仍指向 trait 所属的作用域(通常是定义 trait 的文件上下文,实际解析为 __TRAIT__ 所在类,但行为易误判)。


# php  # ai  # 区别  # 作用域  # Static  # 常量  # 魔术常量  # 父类  # 子类  # 继承  # class  # 对象  # this  # 绑定  # 的是  # 这是  # 后期  # 调用者  # 在此  # 出现在  # 你在  # 仍是 


相关文章: 音响网站制作视频教程,隆霸音响官方网站?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  怎么将XML数据可视化 D3.js加载XML  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  Python如何创建带属性的XML节点  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  山东云建站价格为何差异显著?  如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本  香港服务器网站推广:SEO优化与外贸独立站搭建策略  建站之星CMS五站合一模板配置与SEO优化指南  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  如何获取免费开源的自助建站系统源码?  电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?  安云自助建站系统如何快速提升SEO排名?  建设网站制作价格,怎样建立自己的公司网站?  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  如何通过万网虚拟主机快速搭建网站?  公司网站制作费用多少,为公司建立一个网站需要哪些费用?  建站主机默认首页配置指南:核心功能与访问路径优化  简历在线制作网站免费,免费下载个人简历的网站是哪些?  c# 服务器GC和工作站GC的区别和设置  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  如何制作算命网站,怎么注册算命网站?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  北京制作网站的公司,北京铁路集团官方网站?  制作网站的公司有哪些,做一个公司网站要多少钱?  湖北网站制作公司有哪些,湖北清能集团官网?  制作网站公司那家好,网络公司是做什么的?  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  建站主机数据库如何配置才能提升网站性能?  如何在IIS中新建站点并解决端口绑定冲突?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  制作门户网站的参考文献在哪,小说网站怎么建立?  学校免费自助建站系统:智能生成+拖拽设计+多端适配  如何通过宝塔面板实现本地网站访问?  济南企业网站制作公司,济南社保单位网上缴费步骤?  外贸公司网站制作哪家好,maersk船公司官网?  郑州企业网站制作公司,郑州招聘网站有哪些?  焦点电影公司作品,电影焦点结局是什么?  香港服务器如何优化才能显著提升网站加载速度?  大型企业网站制作流程,做网站需要注册公司吗?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析  如何在Windows虚拟主机上快速搭建网站?  教学论文网站制作软件有哪些,写论文用什么软件 ?  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  建站DNS解析失败?如何正确配置域名服务器?  江苏网站制作公司有哪些,江苏书法考级官方网站?  如何快速搭建响应式可视化网站?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。