Вложенные интерфейсы в PHP - PullRequest
0 голосов
/ 09 февраля 2019

Я хочу связать эту модель 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 = ...;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...