2009-07-31 50 views
0

我有一个类,看起来像这样:PHP静态函数在目录更改时不起作用?

utils的/ Result.php

<?php 

class Result 
{ 
    public static function ok() 
    { 
     echo "OK"; 
    } 
} 

如果我创建了下面的脚本

./sandbox.php

<?php 

require_once("utils/Result.php"); 

print_r(Result::ok()); 

而且运行它与php sandbox.php它工作正常。但是,如果我做到以下几点:cd test && php ../sandbox.php它给了我下面的错误

PHP Fatal error: Call to undefined method Result::ok() in /mnt/hgfs/leapback/sandbox.php on line 5 

现在,意识到需要声明似乎是工作。如果我向Result类中添加一个属性,并在它的一个实例上使用print_r,它看起来是正确的。但静态方法消失。我很困惑。我正在运行PHP 5.2.6。

+0

如果将您的require_once语句替换为require_once dirname(FILE)。 '/ utils/Result.php'` - 会发生什么? – jason 2009-07-31 21:28:06

+0

呃,该死的,注释格式化...应该是下划线下划线文件下划线下划线 – jason 2009-07-31 21:29:00

回答

2

你有更改为(test)的目录中的'utils/Result.php'文件吗?如果是,它将被包括而不是原始文件。