ホームページ  >  記事  >  バックエンド開発  >  拡張 PHP クラスの静的メソッド呼び出しから正しいクラス名を取得できますか?

拡張 PHP クラスの静的メソッド呼び出しから正しいクラス名を取得できますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-01 15:57:30840ブラウズ

Can I retrieve the correct class name from a static method call in an extended PHP class?

拡張 PHP クラスの静的呼び出しからクラス名を取得する

問題:

PHPクラス階層が存在し、基本クラス Action と拡張クラス MyAction があります。 Action クラスの静的メソッド n() は、そのクラス名を返します。ただし、拡張クラス MyAction からメソッドを呼び出すと、「Action」が返されます。

質問:

クラス名から正しいクラス名を取得することは可能ですか?拡張クラスの静的呼び出しですか?

答え:

オプション 1: 非静的メソッド

メソッドが非静的になるように変更し、代わりに $this キーワードを使用すると、get_class($this) 関数を使用して拡張クラスのクラス名を取得できます。

オプション 2: 遅延静的バインディング ( PHP 5.3 )

最新の静的バインディングでは、静的メソッド呼び出しのランタイム ターゲット クラスを解決する get_called_class() 関数が導入されています。これにより、メソッド内でクラス名を直接取得できるようになります。

以上が拡張 PHP クラスの静的メソッド呼び出しから正しいクラス名を取得できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。