2010-08-11 12 views
15

Bir PHP sınıfında __call yöntemini aşırı yüklüyorsam, kodum başka bir şey yapmazsa asıl yöntemi nasıl arayabilirim? Örneğin:PHP parent :: __ call() işlevini çağırıp bağımsız değişkenlere nasıl iletilir?

public function __call($name, $arguments) 
{ 
    if($name == 'tom') 
    { 
     $this->doName($name); 
    } 
    else 
    { 
     // Something here to carry on the __call maybe: 
     // $this->$name($arguments); 
    } 
} 

sorunu $arguments bir dizi olarak geçirilir olmasıdır, nasıl bunu yapmanın bir yolu olduğunu bilgi $this->$name($arg, $arg, $arg ...) yoluyla geçmesine devam edebilir?

return parent::__call($name, $arguments); 

Ya ne istediğini yanlış anlama ediyorum:

cevap

18

Sen diyebilirsin?

Düzenleme:

Ve sen parent::__call() tetiklemek için denemek için $this->$name() aramak istediğiniz anlamına eğer, işe yaramaz. Yığın taşması ve php çöker (diğer bir deyişle, kötü) kadar sonsuz bir döngü içinde rüzgar olacaksınız ...

+0

Heh! Tamamen bunu hiç düşünmemiştim! : D – tarnfeld

6

Bunu kullanabilirsiniz:

call_user_func_array("self::method", $parameters) 
+0

örnek için teşekkürler, php.net ziyaret etmek zorunda değildim :) – Marecky

+0

teşekkürler soooooo çok –

+0

Bu statik yöntemler üzerinde ony çalışacaktır .... – igaster

İlgili konular