PHP中的嵌套接口

PHP中的嵌套接口,php,typescript,interface,Php,Typescript,Interface,我想在PHP中连接此TypeScript模型: export interface Tournament { id: number; name: string; phases: { league: { groups: number; twoLegged: boolean; }, playoff: { twoLegged: boolean;

我想在PHP中连接此TypeScript模型:

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 = ...;
    }
}

Traits不是你的选择吗?@sietse85 Traits在这种情况下有什么帮助?@JavierMarín你在寻找对象属性数据类型的强制执行吗?我不知道你到底想实现什么,另外,PHP中的PHPInterfaces不支持嵌套类/接口。目前,对于定义对象可以公开执行的指令,PHP中的接口更是如此。“如何与此对象进行接口?”,这就是禁止使用属性和非公共方法的原因。与定义对象值类型的TypeScript接口相反。直到PHP7.4,对象属性的类型提示才可用。要在PHP中实现同样的功能,需要使用具有类型暗示的setter方法。Like:PHPDoc标记,在主观上由像PHPStorm这样的ide支持,但根本不强制执行。