У меня есть класс в php, который работает с методом chainning, но проблема в том, что я хочу связать методы в определенном порядке.
class Chain { public function foo () { return $this; } public function bar () { return $this; } public function some () { return $this; } }
Итак, если я использую этот класс, то я могу связать эти методы 9 различными способами (все возможные комбинации из 3-х элементов)
Но что произойдет, если я определю, что some то метод всегда должен быть прикован после foo или bar а не иначе?
$chain = new Chain(); $chain->foo->bar(); //works; ie: the method some is optional $chain->foo()->bar()->some(); //works $chain->bar()->foo()->some(); //works $chain->some()->bar()->foo(); //throws an exception
Я думаю, что я могу сделать это, задавая логические значения, например: когда вызывается метод foo или bar , тогда я устанавливаю значение для некоторого var в true , а когда разработчик вызывает some функцию, если этот var является false , тогда выдает исключение, в противном случае разрешено продолжить.
Но мне нужно что-то более элегантное, например, шаблон или встроенное решение.
Есть еще один способ сделать это?