基于范围解析运算符的PHP

基于范围解析运算符的PHP,php,Php,我使用scope resolution操作符检查它是如何工作的,当我在浏览器中检查它是否正确打印时,它没有给出任何错误 但当我运行nusphere PhpEd调试器工具时,它给我的错误是 严格标准:不应在第12行的D:\Program\u Files\wamp\www\test\index.php中静态调用非静态方法a::fn 我的名字在这里 但它正确地打印了结果。也许我知道真正的问题是什么,我对PHP类还不熟悉。我在谷歌上试过,但没有找到原因 提前感谢您看到的错误非常严重,可能不会显示在您的服

我使用scope resolution操作符检查它是如何工作的,当我在浏览器中检查它是否正确打印时,它没有给出任何错误

但当我运行nusphere PhpEd调试器工具时,它给我的错误是

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

但它正确地打印了结果。也许我知道真正的问题是什么,我对PHP类还不熟悉。我在谷歌上试过,但没有找到原因


提前感谢

您看到的错误非常严重,可能不会显示在您的服务器上。如果您将error_reportingE|u ALL | E|u STRICT设置为error_reportingE|u ALL,您可能会看到该错误

您看到错误的原因是函数fn不是声明为静态的,因此您不必像::fn那样静态地调用它。您可以像这样调用非静态方法:

<?php 
    class a {   

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

    }   

a::fn();     
?>
要使函数成为静态函数,请更改方法声明:

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

编辑:显示了一个与上面类似的示例。

您看到的错误是E_STRICT,可能不会显示在您的服务器上。如果您将error_reportingE|u ALL | E|u STRICT设置为error_reportingE|u ALL,您可能会看到该错误

您看到错误的原因是函数fn不是声明为静态的,因此您不必像::fn那样静态地调用它。您可以像这样调用非静态方法:

<?php 
    class a {   

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

    }   

a::fn();     
?>
要使函数成为静态函数,请更改方法声明:

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

编辑:显示了一个与上面类似的示例。

是否需要将其称为静态方法?为什么不试试:

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

这应该行得通^ ^

您需要将其称为静态方法吗?为什么不试试:

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

这应该行得通^ ^

您需要将其称为静态方法吗?为什么不试试:$a=新a;$->fn;错误报告的不同设置会造成您体验的不同。您需要将其称为静态方法吗?为什么不试试:$a=新a;$->fn;错误报告的不同设置会造成您的体验差异。