PHP在范围解析运算符上

时间:2012-02-15 11:50:19

标签: php

<?php 
    class a {   

     function fn () {
            echo "My name here";
        }

    }   

a::fn();     
?>

我使用范围分辨率运算符来检查它是如何工作的,当我在浏览器中检查它正确打印时它没有给出任何错误。

但是当我运行nusphere PhpEd调试工具时它的代码相同,它给了我像

这样的错误

严格标准:非静态方法a :: fn()不应在第12行的D:\ Program_Files \ wamp \ www \ test \ index.php中静态调用 我的名字在这里

但它正确打印了结果。我可以知道究竟是什么问题,我是PHP类的新手。我在谷歌尝试但我没有理由。

提前谢谢

2 个答案:

答案 0 :(得分:3)

您看到的错误是E_STRICT,可能无法在您的服务器上显示。如果设置error_reporting(E_ALL | E_STRICT),您可能会看到错误。

您看到错误的原因是函数fn未声明为静态,因此您不一定要静态调用它(如a::fn())。您可以调用这样的非静态方法:

$a = new a();
$a->fn();

要使您的函数保持静态,请更改方法声明:

public static function fn() {
    // ...
}

编辑This manual page显示了与您的相似的示例。

答案 1 :(得分:1)

你需要把它称为静态方法吗?为什么不试试:

$a = new a();
$a->fn();

这应该有效^^

相关问题