[英]PHP On scope resolution operator
<?php
class a {
function fn () {
echo "My name here";
}
}
a::fn();
?>
我使用范围解析运算符检查其工作原理,当我在浏览器中检查并正确打印时没有出现错误。
但是当我运行nusphere PhpEd调试器工具时,相同的代码给了我类似的错误
严格标准:在第12行的D:\\ Program_Files \\ wamp \\ www \\ test \\ index.php中,不应静态调用非静态方法a :: fn()
但是它正确打印了结果。 我可以知道实际的问题是什么,我是PHP类的新手。我在google上尝试过,但没有找到原因。
提前谢谢
您看到的错误是E_STRICT
,它可能不会显示在您的服务器上。 如果设置error_reporting(E_ALL | E_STRICT)
,则可能会看到该错误。
您看到此错误的原因是函数fn
并未声明为静态,因此您不一定必须静态调用它(例如a::fn()
)。 您将这样调用一个非静态方法:
$a = new a();
$a->fn();
要使您的函数静态,请更改方法声明:
public static function fn() {
// ...
}
编辑 : 本手册页显示了与您上面类似的示例。
您是否需要将其称为静态方法? 为什么不尝试:
$a = new a();
$a->fn();
这应该工作^^
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.