Nor*_*sly 9 php parameters typechecking
我想知道你认为最好的做法是什么 - 它是否非常适合在PHP中输入检查参数?也就是说,你实际上看到你已经实现了参数类型检查的项目与那些没有实现参数类型检查的项目中的错误明显减少了吗?我在考虑这样的事情:
public function __construct($screenName, $createdAt) {
if (!is_string($screenName) || !is_string($createdAt) {
return FALSE;
}
}
Run Code Online (Sandbox Code Playgroud)
通常在使用skalar变量"types"的PHP应用程序中,实际上是字符串输入(HTTP请求).PHP使这更容易,所以将字符串输入转换为数字,以便您可以使用它进行计算等.
但是,检查is_string示例中建议的标量值没有多大意义.因为标量族中几乎任何类型的变量都是字符串,或者至少可以用作字符串.至于你的类示例,问题是,检查变量类型是否真的有意义?
对于你提出的代码没有任何意义,因为你用一个退出构造函数return false;.这将结束构造函数以运行并返回未正确初始化的对象.
相反,您应该抛出异常,例如,InvalidArgumentException如果构造函数参数未提供预期/需要的值类型.
抛开这一点并理所当然地认为你的对象构造函数需要在字符串和整数或bool或任何其他标量类型之间有所不同,那么你应该进行检查.
如果您不依赖于精确的标量类型,则可以转换为字符串.
只需确保隐藏在对象中的数据总是完全正确,并且错误的数据不可能进入私有成员.