Есть ли способ построить цепочку условно? Пример:
$chain = $restaurant->allFoods()->$filter->get();
затем $filter
является динамическим или условно установленным
if ($user == "vegetarian")
{
$filter = "->onlyVegetables()";
}
Таким образом, если условие выполнено, цепочка станет:
$chain = $restaurant->allFoods()->onlyVegetables()->get();
еще
$chain = $restaurant->allFoods()->get();
Это возможно? Как это называется? Спасибо
Да, через перегрузку с вызовами методов __get / __, в зависимости от того, нужно ли передавать аргументы в фильтр или нет.
<?php
function __get($user) {
if($user == 'vegetarian') {
return $this->onlyVegetables();
}
return $this;
}
Других решений пока нет …