php可以像typescript那样定义interface吗?

classUser{
interfaceUser{
name:string
age:number
}
publicfunctioncreate(Userdata){}
}
如果在php中可以使用类似的语法去校验参数类型吗?
回首忆惘然
浏览 555回答 2
2回答

达令说

结论首先说结论:可以。首先PHP也有接口(interface)这个东西,但是PHP的接口不能声明类成员所以在这里就不太适用了。转而言之PHP5支持抽象类和抽象方法。定义为抽象的类不能被实例化虽然抽象可以设置类成员,但是不能被实例化。其实直接使用类来实现即可,当然类成员设置成private然后创建成员对应的setter对其进行赋值校验即可,如果不嫌麻烦,也可以再创建getter,当然,更简单的办法就是重写__get魔术方法来实现getter,至于使用方法,没什么差别。详见类型约束拓展PHP5可以使用类型约束。函数的参数可以指定必须为对象(在函数原型里面指定类的名字),接口,数组(PHP5.1起)或者callable(PHP5.4起)。不过如果使用NULL作为参数的默认值,那么在调用函数的时候依然可以使用NULL作为实参。PHP5中类型约束不能用于标量类型如int或string。Traits也不允许。PHP7.0中,允许标量类型声明,返回值类型声明PHP7.1中允许可为空(NULL)类型声明,void声明
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript