繁体   English   中英

PHP On范围解析运算符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM