функция — используйте переменную как методы в цепочке PHP, чтобы разрешить цепочку условных методов

Есть ли способ построить цепочку условно? Пример:

$chain = $restaurant->allFoods()->$filter->get();

затем $filter является динамическим или условно установленным

if ($user == "vegetarian")
{
$filter = "->onlyVegetables()";
}

Таким образом, если условие выполнено, цепочка станет:

$chain = $restaurant->allFoods()->onlyVegetables()->get();

еще

$chain = $restaurant->allFoods()->get();

Это возможно? Как это называется? Спасибо

1

Решение

Да, через перегрузку с вызовами методов __get / __, в зависимости от того, нужно ли передавать аргументы в фильтр или нет.

<?php
function __get($user) {
if($user == 'vegetarian') {
return $this->onlyVegetables();
}
return $this;
}

http://php.net/manual/en/language.oop5.overloading.php

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]