2

phpの魔法の関数__call()はクラスで使用されます。同様の魔法の関数はありますが、代わりに関数用ですか?__autoload()のように関数用です。

たとえば、このようなもの

function __call($name, $arguments) {
    echo "Function $name says {$arguments[0]} ";
}
random_func("hello");
4

2 に答える 2

3

いいえ、そんな魔法の機能は存在しないと思います。

これに対する 1 つの回避策は、関数を静的クラスに入れ、__callStaticそのクラスに魔法のメソッドを追加することです (> PHP 5.3 のみ、恐れ入ります):

class Func
 {
   /**  As of PHP 5.3.0  */
   public static function __callStatic($name, $arguments)
     {
    // Note: value of $name is case sensitive.
    echo "Calling static method '$name' "
         . implode(', ', $arguments). "\n";

  }
 }

Func::random_func("hello!");

PHP < 5.3 の場合、同じことを行うことができますが、オブジェクトをインスタンス化し、__callマジック メソッドを使用する必要があります。

$Func = new Func;
$Func->random_func("hello!");
于 2010-08-11T08:55:33.030 に答える
3

いいえ。存在しない関数を呼び出すと、常に致命的なエラーが発生します。

** Zend 拡張機能がこれを でインターセプトできるかもしれませfcall_begin_handlerんが、よくわかりません。

于 2010-08-11T08:55:45.917 に答える