2010-08-09 30 views
9

Se ho una classe PHP come questo:Puntatore funzione al membro della classe statico?

class A 
{ 
    public static function Method() 
    { 
     return "x"; 
    } 
} 

So che posso accedere a questa con:

echo A::Method(); 

Ma come potrei fare per la creazione di una funzione di riferimento a questo metodo? Ho provato qualcosa di simile:

$func = "A::Method"; 
echo $func(); 

Ma mi dà un errore in fase di esecuzione. Quindi, è possibile in PHP? Se é cosi, come? Grazie! :)

risposta

8

Due opzioni:

  • call_user_func("A::Method");
  • $func = function() { return A::Method(); }; echo $func()

E 'previsto (ma è soggetto a modifiche) per essere in grado di fare questo con la riflessione in la prossima versione di PHP:

$srm = new ReflectionMethod('A::Method'); 
$func = $srm->getClosure(); 
$func(); 
+0

Grazie, questo ha risposto alla mia domanda. :) – qJake

+0

Il metodo 'getClosure' è diventato disponibile con PHP 5.4. Essere prudenti anche se circa il 50% dei server utilizza ancora 5.3 – Twifty

2

I metodi di classe o metodi oggetto sono chiamati in modo diverso rispetto alle normali funzioni. Utilizzare call_user_func o call_user_func_array:

call_user_func(array('A', 'Method')); 
call_user_func('A::Method'); // As of 5.2.3 
Problemi correlati