PHPには別のメソッドが呼び出されるたびに呼び出されるマジックメソッドがありますか? __callStatic()メソッドと__call()マジックメソッドは、メソッドが存在しない場合にのみ機能するようです。PHP:メソッドが呼び出されるたびに実行されるマジックメソッド
2
A
答えて
3
いいえあなたが求めているのは、"advice"またはaspect oriented programmingです。 PHPでこれを可能にするいくつかの実験的な拡張があると思いますが、実稼働環境で使用したいことは何もありません。
あなたができることは、__call
経由ですべての呼び出しを委任するラッパーを作成することです。例えば:
class Foo {
function bar() {
echo "Foo::bar\n";
}
}
class AdviceWrapper {
protected $subject;
function __construct($subject) {
$this->subject = $subject;
}
function __call($name, $args) {
echo "Before $name\n";
$result = call_user_func_array(array($this->subject, $name), $args);
echo "After $name\n";
return $result;
}
}
$foo = new AdviceWrapper(new Foo());
$foo->bar();
も参照してください:https://stackoverflow.com/questions/4738282/are-there-any-working-aspect-oriented-php-libraries
0
なぜこれが必要ですか?メソッドを作成して、最初に持っていた各メソッドで呼び出すことができます。
編集: あなたが探しているものは、アスペクト指向プログラミングのようなものです。 Googleでのクイック検索は、こちらをご覧ください: http://code.google.com/p/apdt/
多分役立ちます。
0
あなたは彼らの前に_を使用してメソッドの名前を変更することはできますか?すべてのコールは__call/__callStatic経由でルーティングされますか?
+0
これは動作しません! – ubugnu
関連する問題
- 1. mysql_queryが呼び出されるたびに関数を実行します。 (PHP)
- 2. 呼び出された関数が実行される前にコードを実行
- 3. Funcで実行される呼び出されたメソッドの名前の取得
- 4. 単体テスト中にメソッド呼び出しが試行されたが、実際には呼び出していないが、実際には呼び出さない
- 5. 呼び出される前に実行されるコールバック
- 6. 実行メソッドが呼び出されないスレッド
- 7. 実行時に呼び出されない印刷メソッドは、デバッグ時に呼び出されます
- 8. メソッドが呼び出された行に例外がスローされます
- 9. System.Timers.Timer timer.Stop()が呼び出された後に実行される経過イベント
- 10. Thread.MemoryBarrier()が呼び出されるたびにカスタムコードを実行できますか?
- 11. PHPクラス:メソッド呼び出しが行われるたびに特定の関数を呼び出す
- 12. CellForRowAtIndexメソッドが呼び出されない
- 13. Ios:Delegeteメソッドが呼び出されない
- 14. メソッドonHandleIntent()が呼び出されない
- 15. アプリケーションがバックグラウンドから呼び出されたときにメソッドを呼び出す
- 16. 呼び出されたときにのみメソッドを実行する方法は?
- 17. PHPでメソッドを呼び出すと、呼び出された後に自動的にコードが実行されます。可能?
- 18. task.execute()が呼び出されたときにASyncTaskが実行されない
- 19. PHPから呼び出されるjQueryコードは実行されません
- 20. Pythonが並列に実行されるサブプロセスを呼び出す
- 21. deviceReadyブラックベリーでchangePage()を実行するたびに呼び出される
- 22. 呼び出されずにインクルードされたスクリプトを実行するには?
- 23. "TypeError:if文(Python)でメソッドが呼び出されたときに 'str'オブジェクトが呼び出されません '
- 24. サーブレットが呼び出されるとすぐにメソッド/イベントを実行する方法/ページがロードされる
- 25. MVC javascriptメソッド呼び出しが呼び出されずに保存ダイアログが表示される
- 26. onUpgradeとonCreateが呼び出されたときに実行されません
- 27. Firebaseクエリが呼び出された順番に実行されない
- 28. 呼び出し元でクロスAppDomain呼び出しが実行されます。
- 29. オーバーロードされたオーバーライドされたメソッドを呼び出す方法
- 30. メソッドの呼び出し元をトラッキングする[呼び出しによって呼び出された]
これは完璧です、ありがとう:) – ubugnu