#php #return-value #method-chaining
#php #возвращаемое значение #метод-цепочка
Вопрос:
Я видел разные статьи о цепном методе, но я все еще не понимаю разницы между «return $this» и «return $this-> someVariable».Я также хочу знать, как метод вызывает другой метод внутри и вне класса.
Не мог бы кто-нибудь любезно объяснить это? спасибо вам!
В моем примере он отображает «bca», но я не понимаю, почему «a» отображается последним…
class validation {
public function __construct($a) {
$this->a = $a;
}
public function one($a) {
echo $a = "b";
return $this;
}
public function two($a) {
echo $a = "c";
return $this->a;
}
}
$a = "a";
$NameErr = new validation($a);
echo $NameErr->one($a)->two($a);
Ответ №1:
Он возвращается из two($a), поскольку он возвращает $this->a, который задан в конструкторе как «a», а метод one($a) возвращает экземпляр объекта, для которого затем вызывается функция two .
$это относится к экземпляру объекта. Разница в том, что return $this->someVariable просто возвращает переменную.
Также просто хороший совет по кодированию. Объявите $a в классе как закрытую переменную следующим образом:
class Validation
{
private $a;
}
Ответ №2:
Сначала позвольте мне сказать, что $this относится к классу, в котором вы находитесь.
Этот способ кодирования называется fluent interface . return $this возвращает текущий объект,
$NameErr->one($a)->two($a);
такой же, как
$NameErr->one($a);
$NameErr->two($a);
И в этом случае
Сначала вызывается метод one(), при этом выводится значение b и возвращается объект класса. Теперь вызывается метод two(), выводится значение c и возвращается свойство, которое выводится из класса.
ps: объявление переменной $a как private было бы хорошей практикой.