【发布时间】:2010-12-01 14:21:50
【问题描述】:
我有一个 PHP 脚本,它在 PHP 5 中运行良好,但在 PHP 4 中不行。我制作了一个小测试用例供您演示(免责声明:我知道下面的代码可以写得更好,但它是不是实际使用的作品,而是用来展示我在说什么的作品):
class Messenger {
var $messages = '';
function add($message) {
$this->messages .= "$message\n";
}
}
function add($m) {
if (! isset($GLOBALS['instance'])) $GLOBALS['instance'] = new Messenger();
call_user_func_array(array($GLOBALS['instance'], 'add'), array($m));
}
add("One");
add("Two");
add("Three");
var_dump($GLOBALS['instance']->messages);
在 PHP 5 下,messages 属性包含所有 3 条消息,在 PHP 4 下它是空的。为什么?
【问题讨论】:
-
是你对我帖子的评论,你说得对。正如我在底部提到的那样,我有点缺乏咖啡。也给人的印象是我在这里工作的测试箱是 4.x,但我想它已经升级了。 (对我来说幸运的是,所有开发都在内部进行)。此外,并不是你不能在 PHP 中做同样的事情,只是不能专门将方法装饰为静态的。好的 PHP4 演示:abing.gotdns.com/posts/2006/…