funzioni magiche __call () per le funzioni?
-
27-09-2019 - |
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");
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.