祖父母メソッドを実行する (つまり、親メソッドをバイパスする) 必要がある場合があります。これはコードの匂いだとわかっていますが、他のクラス (フレームワーク、ライブラリなど) を変更できない場合があります。
PHPでは、次のようなものでそれを行うことができます:
call_user_func(array(get_parent_class(get_parent_class($childObject)), 'grandParentMethod'));
問題は、E_STRICT エラーを有効にすると、次のようなエラーが発生することです。
厳格な基準: 非静的メソッド GrandParent::grandParentMethod() は、静的に呼び出されるべきではありません ...
これに対する解決策は1つしか見つかりませんでした(E_STRICTを削除せずに)@
。エラーを抑制するためにを追加するだけです。
しかし、それは本当に醜いです、誰かがより良い解決策を知っていますか?
ありがとう !PS: 次のような新しいオブジェクトをインスタンス化できません:
$grandparent = get_parent_class(get_parent_class($son));
$gp= new $grandparent;
$gp->grandParentMethod
$son のコンテキストで祖父母のメソッドを呼び出す必要があるためです。