циклы — PHP динамическое связывание методов

Как я могу объединить несколько методов, не зная, сколько их будет? Например, как я могу вызвать этот метод addMultiLink более одного раза, как цикл?

(new EntryField('products'))->addMultiLink($product_ids[0])

В принципе, я бы хотел, чтобы результат был таким:

(new EntryField('products'))->addMultiLink($product_ids[0])->addMultiLink($product_ids[1])->addMultiLink($product_ids[2])

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
}
}
1

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

$product_entry_field = (new EntryField('products'));
foreach($product_ids as $product_id) {
$product_entry_field->addMultiLink($product_id);
}
0