ホームページ  >  記事  >  バックエンド開発  >  PHPで現在のクラス名を取得する方法、継承の問題は何ですか?

PHPで現在のクラス名を取得する方法、継承の問題は何ですか?

WBOY
WBOYオリジナル
2016-09-29 09:33:031244ブラウズ

タイトルほど単純ではありません!!


質問は:

PHPでクラスAはクラスBを継承する クラスA内のクラスBのクラス名を取得する方法

実際の使用条件は次のとおりです:

クラスBは基本クラスであり、複数のクラスA、C、D...はクラスBを継承する必要があります。クラスAの動作を記録するためにクラスBにログを書き込みたいです

返信内容:

タイトルほど単純ではありません!!


質問は:

PHPでクラスAはクラスBを継承する クラスA内のクラスBのクラス名を取得する方法

実際の使用条件は次のとおりです:

クラスBは基本クラスであり、複数のクラスA、C、D...はクラスBを継承する必要があります。クラスAの動作を記録するためにクラスBにログを書き込みたいです

私の方法は比較的単純で、クラス B に属性を定義し、B のコンストラクターでこの属性に __CLASS__ を割り当て、サブクラスでこの属性を呼び出して B のクラス名を確認します。

コード:
クラスB{
リーリー

関数を定義するだけです。

基本クラスとサブクラスは相互に呼び出すことができます。

クラス B (ワードクラス) で関数を書きます:

リーリー

クラス A (基本クラス) で呼び出すことができます:

リーリー

多重継承のある子クラスで親クラス名を取得したい場合は、 1. リフレクションを使用する 2. コールバックを使用する(子クラスと親クラス間の呼び出しを含む) 3. 親クラスにselfクラスのメソッドを定義する。

投稿者が提起した質問は次のとおりです:

A、C、D はすべて B を継承しますが、B の関数は「A か C か?」を知る必要があるためです。

リーリー

必要が A にある場合、誰が継承するかを知るために、リフレクションを使用できます

リーリー

> 詳細については、ご自身の目で確認してください

  • デバッグ

    • debug_backtrace

  • 反省

    • リフレクションクラス

  • 機能

    • 呼び出しクラスを取得

    • クラスを取得する

    • get_class_methods

    • get_class_vars

    • get_object_vars

    • 親クラスの取得

    • メソッド_存在

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