継承元クラス関数で、継承先のクラス名を取得する方法はないでしょうか?
質問内容は、後述する子クラス(継承先)
の項でお伺いさせていただきます。
ソースコード
例えば、to〇〇
のようなルールの関数があるとします。
親クラスでは基本的な関数があり、子クラスでは個別に関数を追加します。
呼び出す時は、関数名のルール(〇〇)の部分から該当する関数を呼び出したいので、
クラス内に関数があるかチェックしたいです。
親クラス(継承元)
検証用に、check
と言う関数を用意して、クラス内に関数があるかチェックを行います。
class Parent{ function check($functionName){ var_dump(__CLASS__); // 継承先から呼び出しているが、Childではなく、Parentが返ってくる return method_exists(__CLASS__, 'to' . $functionName); // 親クラスには関数が存在しないためfalseになってしまう。 } function toOriginal(){ // 共通処理 } }
子クラス(継承先)
継承先の子クラスで、check
を呼び出します。
継承しているので、継承元の__CLASS__
でChild
を取得したいです。
継承元のクラス名のままでした。
今回の場合は、__CLASS__
以外の関数を使用する必要があるのでしょうか?
class Child extends Parent { public function toLocalFunction1(){ // 継承先のみの処理 } public function toLocalFunction2(){ // 継承先のみの処理 } } $child = new Child(); $child->check('LocalFunction2'); // falseになってしまう。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/05 23:40