在使用PHP代码时,您可能经常会遇到parent::、static::和self::。但是当你第一次作为一个开发人员开始的时候,有时候你会很困惑,不知道它们是做什么的,以及它们之间的区别。 在我第一次作为开发人员开始工作后的很长一段时间里,我认为static::和self::是完全一样的。
class Foo {public $name = self::class; } $Foo = new Foo; echo $Foo->name; // Foo 这样写就没错了。因为 self 引用的是类本身,调用 class 静态方法也完全行得通。写在最后 在程序架构时这些基类的设计很关键,需要详细规划和细分业务关系,self static $this 这些高频关键字,需要我们熟练掌握。Hap...
self关键字是指向当前类的静态属性、静态方法和常量的引用。它是在类内部使用的,用于引用当前类的静态成员。self关键字不会根据调用位置的类而改变,始终指向当前类。 static关键字也是用于访问静态属性和静态方法的,但它是在运行时根据调用位置的类来确定的。static关键字可以用于在子类中覆盖父类的静态属性和静态方法...
self和static无区别。 在静态函数中,self和static可以调用静态属性和静态方法(沒有实例化类,因此不能呼叫非静态的属性和方法)。 在非静态函数中, self和static可以调用非静态属性和非静态方法。 <?phpclassDemo{publicstatic$static;public$Nostatic;publicfunction__construct(){self::$static="static";$this->Nos...
在PHP中,static和self关键字都用于访问类的静态成员,但它们之间存在一些关键差异,主要体现在它们如何处理继承: self 关键字: self 用于引用当前类中定义的成员和方法。 在类的继承中,self 始终指向定义当前方法的类,而不是在运行时动态决定的类。 举例来说,如果一个方法在父类中定义,并且使用 self 来引用一个静...
PHP中self::和static::的区别 self关键字在编译时而非运行时确定其作用域 static关键字在运行时而非编译时确定其作用域 个人理解: 编译时就是你看到的文件代码的位置,不关心子类是否继承 运行时就是程序实际运行的时候的真实情况,如果有继承,那么就是有继承。
使用static:: 不再被解析为定义当前方法所在的类,而是在实际运行时计算的。也可以称之为“静态绑定”,因为它可以用于(但不限于)静态方法的调用。 静态绑定是PHP 5.3.0,增加的一个功能 用于在继承范围内引用静态调用的类 简单通俗的来说, self就是写在哪个类里面, 实际调用的就是这个类. ...
public function selfName() { echo self::$name; } } $c = new C(); $c->selfName(); // I'm C! $c->staticName(); // I'm C! 通过这个简单的例子,我们可以看出两点: self写在哪个类里面,它固定指向的就是当前的这个类 static就是哪个对象调用它,它指向的就是这个调用者 ...
区分self与静态引用的关键在于,self无需实例化即可使用其方法,而static需要实例化后作为对象的引用。在属性赋值时,只能使用非静态绑定的对象,self则能使用。正确写法中,self引用类本身,调用类静态方法也完全可行。在程序架构中,基类设计至关重要,需要详细规划和细分业务关系。熟练掌握self, static, $...
因为static::class会发生错误。在对属性赋值时,只能使用非静态绑定的对象,同理 代码语言:javascript 代码运行次数:0 运行 AI代码解释 classFoo{public$name=self::class;}$Foo=newFoo;echo $Foo->name;// Foo 这样写就没错了。因为 self 引用的是类本身,调用 class 静态方法也完全行得通。 写在最后 在程序...