Быстрый:
Есть ли способ принудительно применять типы для вариативных функций в PHP? Я предполагаю, что нет, но, может быть, я что-то упустил.
На данный момент я просто принудительно использую один обязательный аргумент нужного типа и повторяю, чтобы проверить остальные.
public function myFunction(MyClass $object){
foreach(func_get_args() as $object){
if(!($object instanceof MyClass)){
// throw exception or something
}
$this->_objects[] = $object;
}
}
Есть ли лучшие решения?
Цель:
Объект-контейнер, который действует как повторяющийся список дочерних объектов с некоторыми вспомогательными функциями. вызов его с помощью конструктора с переменным числом аргументов будет примерно таким:
// returned directly from include
return new MyParent(
new MyChild($params),
new MyChild($params),
new MyChild($params)
);
Другой вариант может быть цепочкой методов addChild
:
$parent = new MyParent;
return $parent
->addChild(new MyChild($params))
->addChild(new MyChild($params))
->addChild(new MyChild($params));
Дети также передают несколько аргументов своему конструктору, поэтому я пытаюсь для баланса между удобочитаемостью и расходами на обработку.