PHP中的静态函数

PHP中的静态函数,php,Php,若我使用范围解析操作符调用公共函数,它不会给出任何错误 class Parent_class { public function st_function() { echo "*************parent class************\n"; } } Parent_class:: st_function(); 但是在PHP.net上的PHP文档中,它给出了静态调用非静态方法会生成E_严格级别的警告。另外,它的给定-静态属性不能使用箭头操

若我使用范围解析操作符调用公共函数,它不会给出任何错误

 class Parent_class
{

    public function st_function()
    {
        echo "*************parent class************\n";
    }
}
Parent_class:: st_function();
但是在PHP.net上的PHP文档中,它给出了静态调用非静态方法会生成E_严格级别的警告。另外,它的给定-静态属性不能使用箭头操作符通过对象访问-> 但它没有给出任何错误。有人能解释一下吗

class Parent_class
{

    public static function st_function()
    {
        echo "*************parent class************\n";
    }
}
Parent_class:: st_function();
$var = new Parent_class();
$var->st_function();

静态属性不能通过对象访问,但不能通过静态方法访问

将类属性或方法声明为静态使它们可以访问 不需要类的实例化。被宣布为财产的财产 无法使用实例化的类对象访问static() 静态方法可以


静态属性不能通过对象访问,但不能通过静态方法访问

将类属性或方法声明为静态使它们可以访问 不需要类的实例化。被宣布为财产的财产 无法使用实例化的类对象访问static() 静态方法可以


在编写代码之前,请尝试以下操作:

error_reporting(E_ALL | E_STRICT);

在编写代码之前,请尝试以下操作:

error_reporting(E_ALL | E_STRICT);

如果激活严格的错误报告,您将看到静态调用非静态方法的错误:

error_reporting(E_ALL | E_STRICT);
对于第二部分,您可以非静态地调用静态方法,因为手册中的段落讨论的是静态属性,而不是方法。如果有这样一个属性,则不能像
Parent\u class->static\u property
那样访问
Parent\u class::static\u property


调用对象的静态方法可以很好地工作,在这种情况下,
$var->
只是
父类::

的简写,如果激活严格的错误报告,您将看到静态调用非静态方法的错误:

error_reporting(E_ALL | E_STRICT);
对于第二部分,您可以非静态地调用静态方法,因为手册中的段落讨论的是静态属性,而不是方法。如果有这样一个属性,则不能像
Parent\u class->static\u property
那样访问
Parent\u class::static\u property


调用对象的静态方法很好,在这种情况下,
$var->
只是
父类的一个方便的简写:

您使用严格的错误报告吗?是的。当我添加错误报告(E\u strict)时,它作为严格标准发出通知:非静态方法父类::st\u函数()不应在第103行的D:\wamp\www\test.php中静态调用您是否使用严格的错误报告?是的。当我添加错误报告(E\u strict)时,它作为严格标准发出通知:不应在第103行的D:\wamp\www\test.php中静态调用非静态方法Parent\u class::st\u function()