因为static::class会发生错误。在对属性赋值时,只能使用非静态绑定的对象,同理 代码语言:javascript 复制 classFoo{public$name=self::class;}$Foo=newFoo;echo $Foo->name;// Foo 这样写就没错了。因为 self 引用的是类本身,调用 class 静态方法也完全行得通。 写在最后 在程序架构时这些基类的设计很关键,...
self 可以用于访问类的静态属性、静态方法和常量,但 self 指向的是当前定义所在的类,这是 self 的限制。 static 也可以用于访问类的静态属性、静态方法和常量,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 来引用一个静...
1. self关键字是指向当前类的静态属性、静态方法和常量的引用。它是在类内部使用的,用于引用当前类的静态成员。self关键字不会根据调用位置的类而改变,始终指向当前类。2. static关键字也...
再谈PHP中的self与static 之前的文章中有介绍过self、static和parent的传递问题。今天,通过一个小实验,我们来看看self和static操作变量的问题。 classA { publicstatic$name="I'm A!"; publicfunctionselfName() { echoself::$name; } publicfunctionstaticName() ...
public function selfName() { echo self::$name; } } $c = new C(); $c->selfName(); // I'm C! $c->staticName(); // I'm C! 通过这个简单的例子,我们可以看出两点: self写在哪个类里面,它固定指向的就是当前的这个类 static就是哪个对象调用它,它指向的就是这个调用者 ...
这次类 X 的 bar 方法我们使用 self::foo() 调用。那么很显然,self 就是 class X 本身,那么调用的也自然是 X 的 foo 方法。上述程序输出 X::foo()。引申:尽量别用 self::,要用 static::self 简单好用,但是作用域叫人恼火。因为它的作用域是在定义时的,而不是执行时的。比如这么个例子:如果...
在使用PHP代码时,您可能经常会遇到parent::、static::和self::。但是当你第一次作为一个开发人员开始的时候,有时候你会很困惑,不知道它们是做什么的,以及它们之间的区别。 在我第一次作为开发人员开始工作后的很长一段时间里,我认为static::和self::是完全一样的。
self是不被继承的,指self所在类,也只能调用所在类的常量和静态变量。 static是可以被继承的,可以调用子类中常量和静态变量 <?phpclassa{public$a=1;constB=2;publicfunctionsum(){return$this->a+static::B;}}classaaextendsa{}var_dump((newaa())->sum());int(3) ...