首先我们要明确一点,self 是指向类本身,也就是self 是不指向任何已经实例化的对象,一般self 使用来指向类中的静态变量。 ——— PHP代码 ——— class Counter { //定义属性,包括一个静态变量 private static $firstCount = 0; private $lastCount; //构造函数 function __construct() { $this->lastCount ...
self写在哪个类里面,它固定指向的就是当前的这个类 static就是哪个对象调用它,它指向的就是这个调用者 从代码中我们可以看出,B类没有重写selfName()方法,所以B类调用selfName()时调用的是父类A的selfName()方法,self在这个方法中指向的是A类。而C类重写了父类的selfName()方法,在调用C类的selfName()时,这...
self 可以用于访问类的静态属性、静态方法和常量,但 self 指向的是当前定义所在的类,这是 self 的限制。 static 也可以用于访问类的静态属性、静态方法和常量,static 指向的是实际调用时的类。 当进行非静态方法调用时,该类名(static指向的类名)为该对象所属的类,即实际调用时的对象所属的类。 如上述示例中的...
在使用PHP代码时,您可能经常会遇到parent::、static::和self::。但是当你第一次作为一个开发人员开始的时候,有时候你会很困惑,不知道它们是做什么的,以及它们之间的区别。 在我第一次作为开发人员开始工作后的很长一段时间里,我认为static::和self::是完全一样的。
引申:尽量别用 self::,要用 static:: self 简单好用,但是作用域叫人恼火。因为它的作用域是在定义时的,而不是执行时的。比如这么个例子: 如果调用 Person::status(),返回 'Person is alive'。现在新建类,并继承该类: 执行Deceased::status(),你期望得到什么,肯定是 Decased 类的 getStatus() 返回的值对...
在PHP中,static和self关键字都用于访问类的静态成员,但它们之间存在一些关键差异,主要体现在它们如何处理继承: self 关键字: self 用于引用当前类中定义的成员和方法。 在类的继承中,self 始终指向定义当前方法的类,而不是在运行时动态决定的类。 举例来说,如果一个方法在父类中定义,并且使用 self 来引用一个静...
public function selfName() { echo self::$name; } } $c = new C(); $c->selfName(); // I'm C! $c->staticName(); // I'm C! 通过这个简单的例子,我们可以看出两点: self写在哪个类里面,它固定指向的就是当前的这个类 static就是哪个对象调用它,它指向的就是这个调用者 ...
1. self关键字是指向当前类的静态属性、静态方法和常量的引用。它是在类内部使用的,用于引用当前类的静态成员。self关键字不会根据调用位置的类而改变,始终指向当前类。2. static关键字也...
静态函数只能使用静态变量,静态函数和变量的引用是通过 self::函数名() 和 self::变量名。上述实例中,静态变量的引用是由类名(exampleClass::$foo),或者 self:: (self::$foo),当在这个类的静态方法[称为 静态函数()]里使用时。类的正则函数和变量需要一个对象上下文来引用,他们不能脱离对象...
PHP官方也说过,大概意思是说self调用的就是本身代码片段这个类,static - PHP 5.3加进来的只得是当前这个类,有点像$this的意思,static调用的是从堆内存中提取出来,访问的是当前实例化的那个类,那么 static 代表的就是那个类,例子比较容易明白些。 其实static就是调用的当前调用的类,比较抽象吧。