2011-08-22 13 views
5

Hace unos meses, leí acerca de una función de PHP que se llama cada vez que se llama un método estático, similar a la función __construct que se llama cuando se instancia una instancia de clase. Sin embargo, parece que no puedo encontrar qué función se ocupa de esta funcionalidad en PHP. ¿Hay tal función?Alternativa de constructor para métodos estáticos en PHP

Respuesta

6

se puede jugar con __callStatic() y hacer algo como esto:

class testObj { 
    public function __construct() { 

    } 

    public static function __callStatic($name, $arguments) { 
    $name = substr($name, 1); 

    if(method_exists("testObj", $name)) { 
     echo "Calling static method '$name'<br/>"; 

     /** 
     * You can write here any code you want to be run 
     * before a static method is called 
     */ 

     call_user_func_array(array("testObj", $name), $arguments); 
    } 
    } 

    static public function test($n) { 
    echo "n * n = " . ($n * $n); 
    } 
} 

/** 
* This will go through the static 'constructor' and then call the method 
*/ 
testObj::_test(20); 

/** 
* This will go directly to the method 
*/ 
testObj::test(20); 

Utilizando este código cualquier método que está precedido por '_' se desarrollará el 'constructor' estática en primer lugar. Este es solo un ejemplo básico, pero puede usar __callStatic, sin embargo, funciona mejor para usted.

¡Buena suerte!

+0

No es lo que esperaba, pero creo que es lo más cercano a lo que estoy buscando. Gracias, Adi. –

+0

No hay problema, espero haber ayudado. –

3

El __callStatic() es llamado cada vez que llamas no existe el método estático de una clase.

+0

Me encontré con este método en el manual de PHP hace algún tiempo, pero, como usted menciona, solo se llama cuando se llama a un método estático no existente. –

Cuestiones relacionadas