1

这个static关键字是在 PHP5 中引入的,这有点让人得出 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

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

4

1 回答 1

3

关键字所做的static只是告诉 PHP 一个函数应该被静态调用。实际上,即使是最新版本也可以让您根据需要静态调用任何函数,正如这个在线演示中的多个 PHP 版本中的代码所示。

如果您将错误报告设置为最大,就像在这个演示中一样,您将看到较新版本的 PHP 会给出一条E_STRICT消息,即您正在使用一个尚未声明为静态的函数,但在其他方面完全像以前一样运行代码。

进行静态函数调用所需要的只是::,这在 PHP 4 中存在且正确。在 PHP 5 中以及在 5.3 中进一步整理了非静态方法

于 2013-10-08T22:18:46.880 回答