Как сделать несколько вызовов методов класса в одной строке?
У меня проблема с 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()
.
12
2 answers
Способ вызова функции класса по одному просто с помощью "->", потому что функция возвращает один и тот же объект класса. Смотрите пример ниже. Вы получите это
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;
31
Author: Rajan Rawal, 2012-07-19 04:02:36
Каждый из этих методов должен будет возвращать некоторый объект, в котором хранится то, что вы задали в качестве аргумента в нем. Предположительно, это будет template
, который содержит каждое свойство объекта на нем, и когда вы вызываете метод, он устанавливает соответствующую переменную и возвращает себя.
1
Author: jprofitt, 2012-07-19 02:38:26