Я хочу связать эту модель TypeScript в PHP:
export interface Tournament {
id: number;
name: string;
phases: {
league: {
groups: number;
twoLegged: boolean;
},
playoff: {
twoLegged: boolean;
}
};
}
И единственное решение, которое я знаю, было бы следующим:
/**
* @property int $id
* @property int $name
* @property Tournament_Phases $phases
*/
interface Tournament
{
}
/**
* @property Tournament_Phase_League $league
* @property Tournament_Phase_Playoff $playoff
*/
interface Tournament_Phases
{
}
/**
* @property int $groups
* @property bool $twoLegged
*/
interface Tournament_Phase_League
{
}
...
Если модель становится больше, числозаявленных интерфейсов будет соответственно расти.
Есть ли другой, более краткий способ объявления вложенных объектных интерфейсов?
РЕДАКТИРОВАТЬ:
Есть анонимные классы , есть какие-то анонимные интерфейсы?Что-то вроде:
interface Tournament
{
public $phases = new interface {
$league= new interface {
$groups;
$twoLegged;
}
$playoff = ...;
}
}