PHP динамический метод цепочки

1

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

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

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

(new EntryField('products'))->addMultiLink($product_ids[0])->addMultiLink($product_ids[1])->addMultiLink($product_ids[2])
  • 0
    Нет, это был больше вопрос о том, как сделать это в цикле
  • 0
    А ну понятно. Извините за пометку.
Теги:
methods
loops
chaining

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
    }
}
0
$product_entry_field = (new EntryField('products'));
    foreach($product_ids as $product_id) {
        $product_entry_field->addMultiLink($product_id);
    }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню