【问题标题】:PHP Dynamic Method ChainingPHP 动态方法链
【发布时间】:2016-02-05 11:59:24
【问题描述】:
如何在不知道会有多少个方法的情况下将多个方法链接在一起?例如,如何像循环一样多次调用这个 addMultiLink 方法?
(new EntryField('products'))->addMultiLink($product_ids[0])
基本上我希望结果是这样的:
(new EntryField('products'))->addMultiLink($product_ids[0])->addMultiLink($product_ids[1])->addMultiLink($product_ids[2])
【问题讨论】:
标签:
php
loops
methods
chaining
【解决方案1】:
在您的addMultiLink 中返回$this:
public function addMultiLink($argument)
{
// your code here
return $this;
}
但正如我所见,您每次调用都会在函数中传递数组元素。
也许最好重写addMultiLink 并将其参数视为数组?或者检查它是数组还是某个整数值:
public function addMultiLink($argument)
{
if (is_array($argument)) {
// do a foreach loop for example
} else {
// do something else
}
}
【解决方案2】:
$product_entry_field = (new EntryField('products'));
foreach($product_ids as $product_id) {
$product_entry_field->addMultiLink($product_id);
}