<?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类的新手。我在谷歌尝试但我没有理由。
提前谢谢
答案 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();
这应该有效^^