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声明
添加回答
举报
0/150
提交
取消