为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

回首忆惘然 2019-04-27 17:18:56
classUser{interfaceUser{name:stringage:number}publicfunctioncreate(Userdata){}}如果在php中可以使用类似的语法去校验参数类型吗?
查看完整描述

2 回答

?
达令说

TA贡献1821条经验 获得超6个赞

结论
首先说结论:可以。
首先
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声明
                            
查看完整回答
反对 回复 2019-04-27
  • 2 回答
  • 0 关注
  • 554 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信