0

スコープ解決演算子を使用してパブリック関数を呼び出すと、エラーは発生しません。

 class Parent_class
{

    public function st_function()
    {
        echo "*************parent class************\n";
    }
}
Parent_class:: st_function();

しかし、php.net の PHP ドキュメントでは、非静的メソッドを静的に呼び出すと、E_STRICT レベルの警告が生成されます。また、-矢印演算子を使用してオブジェクトから静的プロパティにアクセスすることはできません->しかし、エラーは発生しません。誰でも説明できますか?

class Parent_class
{

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

3 に答える 3

2
于 2012-08-29T10:22:46.210 に答える
2

厳密なエラー報告を有効にすると、非静的メソッドを静的に呼び出した場合にエラーが表示されます。

error_reporting(E_ALL | E_STRICT);

静的メソッドを非静的に呼び出す2番目の部分では、マニュアルの段落がメソッドではなく静的プロパティについて話しているため、これは機能します。そのようなプロパティがあった場合、Parent_class::static_propertylikeにアクセスすることはできません。Parent_class->static_property

オブジェクトの静的メソッドの呼び出しは正常に機能します。その場合、$var->は の便利な省略形ですParent_class::

于 2012-08-29T10:24:36.003 に答える
0

コードの前にこれを試してください:

error_reporting(E_ALL | E_STRICT);
于 2012-08-29T10:23:44.600 に答える