2012-07-19 18 views
12

PHP'de bir sorunum var. Benim php dosyasında i aşağıdaki satırı yarattı:Aynı yöntemde sınıf yöntemlerine birden çok çağrı nasıl yapılır?

$foo = $wke->template->notify() 
        ->type("ERROR") 
        ->errno("0x14") 
        ->msg("You are not logged.") 
        ->page("login.tpl"); 

Sonunda, benim $foo değişken bu dönecektir gerekir:

$foo->type = "ERROR" 
$foo->errno= "0x14" 
$foo->msg= "You are not logged." 
$foo->page= "login.tpl" 

$wke->template i çağırmak gereken yere olduğuna dikkat edin notify() öğesi.

+2

taşımaktadır açık değildir alacak. Orijinal niyetinizi sadece kelimelerle açıklayın. – zerkms

+0

Neden bir satırda yapmaya devam etmekte ısrar ediyorsunuz? ayrı aramalarda yapmalısınız! – alfasin

+0

Cevabınız için teşekkür ederiz. İhtiyacım olan tüm bilgilerle bir değişken oluşturmak için bir yöntem oluşturmam gerekiyor. Belirli şeyleri yapmak için çağrılan tüm yöntemleri özelleştirmem ve aynı zamanda ihtiyacım olan tüm bilgileri geri vermem gerekiyor. – DrSAS

cevap

30

Sınıfın aynı nesnesini döndüren işlevden dolayı, yalnızca "->" tarafından tek tek sınıf işlevini çağırmanın yolu. Aşağıdaki örneğe bakınız. Bu

class Wke { 

    public $type; 
    public $errno; 
    public $msg; 
    public $page; 

    public $template = $this; 

    public function notify(){ 
     return $this; 
    } 

    public function errorno($error){ 
     $this->errno = $error; 
     return $this; // returning same object so you can call the another function in sequence by just -> 
    } 
    public function type($type){ 
     $this->type = $type; 
     return $this; 
    } 
    public function msg($msg){ 
     $this->msg = $msg; 
     return $this; 
    } 
    public function page($page){ 
     $this->page = $page; 
     return $this; 
    } 
} 

bütün sihirli soru return $this;

+0

Çalıştı! Teşekkür ederim! – DrSAS

+0

lütfen oy verin. –

+0

Şuan şimdilik yapamam. Oy Verme yetkisine sahip değilim (yeterli itibar): s – DrSAS

1

Bu yöntemlerden her birinde, argüman olarak ayarladığınız öğeleri saklayan bazı nesneleri döndürmeniz gerekir. Muhtemelen, her nesne özelliğini içeren template olacaktır ve yöntemi çağırdığınızda ilgili değişkeni ayarlar ve kendini döndürür.

İlgili konular