在PHP链中使用Variable作为方法以允许条件方法链接

时间:2017-02-18 18:38:20

标签: php function methods method-chaining

有条件有条件地建立链条吗?例如:

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

然后$filter动态或有条件设置

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

因此,如果满足条件,链将变为:

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

否则

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

这可能吗?这个叫什么?谢谢

1 个答案:

答案 0 :(得分:2)

是的,通过方法__get / __调用重载,具体取决于你是否需要将参数传递给过滤器。

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

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