PHP5中引入了static
关键字,这使得人们得出PHP4不支持静态方法或变量的结论。然而,当我在PHP 4.4.9上运行以下代码时,它可以在没有调用构造函数的情况下工作。
<?php
class a {
function a() {
echo "CONSTRUCTOR CALLED\r\n";
}
function b($var) {
return $var . 'x';
}
}
print_r(array_map(array('a', 'b'), array('a', 'b')));
你可以用这个PHP“小提琴”来玩这些代码:
http://sandbox.onlinephpfunctions.com/code/1d6882a8264620a0165d7345791f8680586a869e
关于这是如何运作的任何想法?
答案 0 :(得分:3)
所有static
关键字都告诉PHP静态调用函数 。实际上,即使是最新版本,您也可以根据需要静态调用任何函数,如this online demo with your code in multiple PHP versions所示。
如果您turn error reporting to the max, as in this demo,您将看到较新版本的PHP发出E_STRICT
消息,表明您正在静态使用尚未声明的函数,但是否则完全按照之前。
进行静态函数调用所需的只是::
,这在PHP 4中是正确的。它实际上是在PHP 5中整理的非静态方法,以及5.3