PHP の静的メソッドは非静的メソッドにアクセスできます。オブジェクトをインスタンス化すると、オブジェクト内の非静的メソッドを呼び出すことができます。静的メソッドは非静的メソッドを呼び出すことはできますが、コンストラクターを呼び出すことはできません。
この記事の動作環境: Windows 10 システム、PHP バージョン 7.1、Dell G3 コンピューター。
非静的メソッドを呼び出すとどうなりますか?まずテストを行ってください。
<?php class test{ function test() { echo 'it works'; } } test::test(); ?>
次を実行すると、返されるエラーは次のとおりです:
Fatal error: Non-static method test::test() cannot be called statically in /home/×××/test.php on line 7 Call Stack: 0.0002 332548 1. {main}() /home/×××/test.php:0
現時点では、非静的メソッドを静的に呼び出すことは機能しないと思われるかもしれませんが、実際には機能します。 test() メソッドは特殊であるため、クラスと同じ名前を持ち、コンストラクター メソッドです。テストを続けます。
<?php class test { function test() { echo 'it works'; } function test2() { echo 'it works too'; } } test::test2(); ?>
実行結果:
it works too
これは、非静的メソッドの静的な呼び出しは可能ですが、コンストラクターの静的な呼び出しは不可能であることを示しています。この結論を検証するために、次のテストを実行しました。
<?php class test{ static function test() { echo 'it works'; } } test::test(); ?>
Fatal error: Constructor test::test() cannot be static in /home/xxx/test.php on line 9
PHPだけが非静的メソッドを静的に呼び出すことができるからです。私はJavaで実験をしました。非静的メソッドが静的に呼び出された場合、次のエラーが報告されます:
Cannot make a static reference to the non-static method showString() from the type HelloWorldApp
PHP ビデオ チュートリアル 」
以上がPHPの静的メソッドは非静的メソッドにアクセスできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。