PHP4和静态方法/回调函数

时间:2013-10-08 22:06:14

标签: php oop static php4

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

关于这是如何运作的任何想法?

1 个答案:

答案 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