📜  PHPself::$bar 和 static::$bar 的区别

📅  最后修改于: 2022-05-13 01:54:11.171000             🧑  作者: Mango

PHPself::$bar 和 static::$bar 的区别

self关键字: PHP关键字,表示当前类,用于访问静态类变量或静态变量,因为这些成员属于一个类而不是该类的对象。

例子:


输出:
10
10

您可以看到在这两种情况下,$bar 的值都打印在演示类中,即使对于第二次调用,我们正在尝试获取子类的 $bar 值。这是因为 'self' 关键字。 self 仅指 $bar 的编译时版本,或者更简单地说,指的是它所在的类的版本。实际上,它被认为是 'self' 的限制,但可以通过使用 'static ' 关键字。

Static关键字:这个PHP关键字有助于“ PHP的后期静态绑定”的概念出现。它用于在运行时访问扩展类所需的静态函数。



例子:


输出:
10
20

'static' 关键字通过强制执行后期静态绑定的概念,涵盖了 'self' 关键字所具有的限制。在这种情况下,静态要求编译器为要求它的类打印函数的版本。所有这些都发生在运行时,因此后期静态绑定是在PHP在运行时显示多态性的一种方式。

self 与静态:它们之间最基本的区别是 self 指向声明它的类的属性版本,但在静态的情况下,该属性在运行时会进行重新声明。