PHP中的嵌套接口
我想在PHP中连接此TypeScript模型: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;
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支持,但根本不强制执行。