当前位置: 首页 > news >正文

PHP静态类self和static用法

在 PHP 中,static 和 self 是两个重要的关键字,用于类的静态成员访问和方法调用。它们的主要区别在于它们的绑定方式和作用范围。

  • static

static 的特点
static 引入了后期静态绑定(Late Static Binding),它的作用是根据实际调用的类来绑定方法或属性。与 self 不同,static 会在运行时解析调用类,从而支持多态。

<?phpclass Car {public static function model() {static::getModel();}protected static function getModel() {echo "I am a Car!";}
}class Mercedes extends Car {protected static function getModel() {echo "I am a Mercedes!";}
}Mercedes::model(); // 输出: I am a Mercedes!
  • self
<?phpclass Car {public static function model() {self::getModel();}protected static function getModel() {echo "I am a Car!";}
}class Mercedes extends Car {protected static function getModel() {echo "I am a Mercedes!";}
}Mercedes::model(); // 输出: I am a Car!

self 和 static 的区别

  • 绑定方式:self 是编译时绑定,指向定义方法的类;static 是运行时绑定,指向调用方法的类。

  • 多态支持:self 不支持多态,而 static 支持多态。

  • 使用场景:self 适用于明确需要引用当前类的场景;static 适用于需要动态绑定的场景。

总结来说,self 和 static 在静态方法和属性的访问中各有用途。self 更加直接,而 static 提供了更灵活的多态支持,尤其在继承和动态调用中非常有用。

http://www.lryc.cn/news/623996.html

相关文章:

  • 6-服务安全检测和防御技术
  • Tomcat Service 服务原理
  • Coin与Token的区别解析
  • java八股文-(spring cloud)微服务篇-参考回答
  • C语言基础:(十六)深入理解指针(6)
  • Centos 更新/修改宝塔版本
  • Rust 入门 生命周期(十八)
  • react echarts图表监听窗口变化window.addEventListener(‘resize’)与ResizeObserver()
  • 音乐创作魔法:解锁和弦与旋律的变化技巧
  • 3D打印——给开发板做外壳
  • 如何做HTTP优化
  • 【JAVA 核心编程】面向对象高级:类变量与方法 抽象类与接口
  • PowerPoint和WPS演示让多个对象通过动画同时出现
  • NY270NY273美光固态闪存NY277NY287
  • Portkey-AI gateway 的一次“假压缩头”翻车的完整排障记:由 httpx 解压异常引发的根因分析
  • duiLib 解决点击标题栏中按钮无响应问题
  • C# 反射和特性(自定义特性)
  • 健身房预约系统SSM+Mybatis实现(三、校验 +页面完善+头像上传)
  • RISC-V汇编新手入门
  • 【LeetCode】单链表经典算法:移除元素,反转链表,约瑟夫环问题,找中间节点,分割链表
  • 开发指南132-DOM的宽度、高度属性
  • HTTP0.9/1.0/1.1/2.0
  • SWE-bench:真实世界软件工程任务的“试金石”
  • 人工智能入门②:AI基础知识(下)
  • C++入门自学Day11-- String, Vector, List 复习
  • 如何利用gemini-cli快速了解一个项目以及学习新的组件?
  • 数据结构03(Java)--(递归行为和递归行为时间复杂度估算,master公式)
  • 人脸AI半球梯控/门禁读头的功能参数与技术实现方案
  • MySQL的事务基础概念:
  • 力扣刷题904——水果成篮