PHP面向对象中new self()与 new static()的区别浅
PHP中的new self()和new static()是面向对象编程中的两个重要特性,它们在PHP 5.3版本中引入的后期静态绑定(Late Static Binding)中扮演着关键角色。接下来,我们将深入这两个特性的区别,并通过生动的例子加以说明。狼蚁网站SEO优化这篇文章将带你深入理解它们的不同之处。
让我们明确一点,self和static在PHP中指的是不同的对象实例。简单来说,self总是指向当前正在执行的类,而static则指向调用当前静态方法的类。这听起来可能有点抽象,让我们通过具体的例子来说明。
假设我们有类A和类B,类B继承自类A。如果我们使用new self(),无论在哪个类中调用,它都会创建当前类的实例。而new static(),则会根据调用静态方法的类来创建实例。这就是它们之间的主要区别。
让我们通过一个具体的例子来验证这个结论:
```php
class A {
public static $_a = 'Class A';
public static function echoProperty() {
echo self::$_a . PHP_EOL; // 输出当前类的静态属性
echo static::$_a . PHP_EOL; // 输出调用方法的类的静态属性
}
}
class B extends A {
public static $_a = 'Class B';
}
$obj = new B(); // 创建B类的实例
B::echoProperty(); // 输出 Class A 和 Class B,因为self指向B类,而static指向调用方法的类,也就是B类。
```
在上面的例子中,我们可以看到使用self::时,访问的是定义方法的当前类的静态属性;而使用static::时,访问的是调用方法的类的静态属性。这就是它们的主要区别。
编程语言
- PHP面向对象中new self()与 new static()的区别浅
- JS jQuery使用正则表达式去空字符的简单实现代码
- vim中tagbar配置以及打字时隐藏鼠标的方法
- 解决vue-cli脚手架打包后vendor文件过大的问题
- asp使用Weekday函数计算项目的结束时间
- 在ashx文件中使用session的解决思路
- JS传递对象数组为参数给后端,后端获取的实例代
- php从给定url获取文件扩展名的方法
- JS获取年月日时分秒的方法分析
- webpack本地开发环境无法用IP访问的解决方法
- php实现获取文件mime类型的方法
- JQuery中Text方法用法实例分析
- vue-cli项目修改文件热重载失效的解决方法
- Jquery修改image的src属性,图片不加载问题的解决方
- asp.net 修饰符介绍(关于public、private、protected、
- PHP使用CURL获取302跳转后的地址实例