Скажем, у меня есть класс с такими ребятами,
class Car
{
// Types
const TYPE_SALOON = "Saloon";
const TYPE_HATCHBACK = "Hatchback";
...
public static function validTypes() {
return array(
static::TYPE_SALOON,
static::TYPE_HATCHBACK,
...
);
}
}
Мне нужно, чтобы конструктор принял входной аргумент с именем type, который выходит из массива, возвращаемого validTypes (). Обычно я делаю это так:
function __construct($type, ...) {
if(!in_array($type, static::validTypes())) {
// Throw Exception
}
}
Какой более элегантный способ сделать это?
Есть ли способ сделать это с typeHinting?
Задача ещё не решена.
Других решений пока нет …