2

別のメソッドが呼び出されるたびに呼び出されるPHPの魔法のメソッドはありますか?__callStatic()および__call()マジックメソッドは、メソッドが存在しない場合にのみ機能するようです。

4

3 に答える 3

5

いいえ。あなたが求めているのは、「アドバイス」またはアスペクト指向プログラミングと呼ばれるものです。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

于 2012-04-13T17:51:54.607 に答える
0

なぜこれが必要なのですか?メソッドを作成して、最初に持っている各メソッドで呼び出すことができます。

編集:あなたが検索するのは、phpのアスペクト指向プログラミングのようなものです。グーグルでのクイック検索はここでこれを見つけました: http ://code.google.com/p/apdt/

多分それは役立ちます。

于 2012-04-13T17:51:14.307 に答える
0

メソッドの名前の前に_を付けて名前を変更できますか?次に、すべての通話は__call / __callStaticを介してルーティングされますか?

于 2012-04-13T17:52:07.317 に答える