如何在同一行中多次调用类方法?

时间:2012-07-19 02:20:21

标签: php class

我在PHP中遇到了问题。 在我的php文件中,我创建了以下行:

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

最后,我需要我的$foo变量将返回:

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

请注意$wke->template是我需要调用notify()元素的地方。

2 个答案:

答案 0 :(得分:32)

通过“ - >”逐个调用类的功能的方法因为函数返回类的同一个对象。请参阅下面的示例。你会得到这个

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;
    }
}

整个魔法是return $this;

答案 1 :(得分:1)

这些方法中的每一个都需要返回一些对象,该对象存储您在其中设置的参数。据推测,它将包含template上的每个对象属性,当您调用该方法时,它会设置相应的变量并返回自身。