Domanda

La __call funzione di magia () in PHP sono utilizzati nelle classi. Ci sono una funzione magica simile, ma per le funzioni, invece? Come __autoload () è per le funzioni.

Per esempio qualcosa di simile

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

Soluzione

No, non credo che esista una funzione di tale magia.

Una soluzione per questo sarebbe quella di mettere le vostre funzioni in una classe statica, e aggiungere un __callStatic metodo magico di quella classe (> PHP 5.3 solo, ho paura):

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!");

Per PHP <5.3, si potrebbe fare la stessa cosa, ma si dovrebbe creare un'istanza di un oggetto e utilizzare il metodo magico __call.

$Func = new Func;
$Func->random_func("hello!");

Altri suggerimenti

No. Chiamata di una funzione che non esiste sarà sempre risultato in un errore fatale.

** Forse un estensione Zend può intercettare questo con un fcall_begin_handler, ma non sono sicuro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top