它是很好的做法,这样的性质:是否可以拥有财产,可以是或虚假或数组或空
/**
* @var false|array|null
*/
protected $mockMethods = false;
该属性可以是或false
或array
或null
。
或者也许更好只有一个数据类型的内部类属性?
它是很好的做法,这样的性质:是否可以拥有财产,可以是或虚假或数组或空
/**
* @var false|array|null
*/
protected $mockMethods = false;
该属性可以是或false
或array
或null
。
或者也许更好只有一个数据类型的内部类属性?
作为一般规则,我会说“不”。主要是因为你可能最终会在代码中添加对变量类型的附加类型检查。这就是说:我已经看到它做了很多次,包括函数中PHP的返回值。所以我不能说它是'禁区'或任何东西!
有很多函数 - 包括内置函数 - 返回字符串或数组,false
或null
。
在这些情况下,原因是该函数的主要目的是返回一个字符串或数组。如果操作不适用,通常会返回false
- 例如,如果您针对不包含要查找的子字符串的字符串调用strpos()
,而在某处发生错误时将专门返回null
。
但你的问题是关于变量,属性更精确。虽然用于恢复可返回三种不同类型的函数(取决于情况)的返回的变量可以被指定为这些类型中的任何一种,但是存储该不确定的信息是不明智的。
当一个值来自可以返回几种不同类型的函数时,您必须在使用它之前对其进行测试。您越早测试并确认其性质,您就可以越早采取相应措施。
如果您只是将该返回值指定给您的属性并在使用它时测试其类型,则意味着您必须在每次需要时测试它。此外,如果发生错误,则将一个无用的null
存储在属性中,并且只在需要该值时检测错误。
制作程序的一个好方法是根据它们将包含的内容以及对它做些什么来设计变量。它使你的代码更加明显,并可以帮助你预防错误。
在存储它们之前检查函数返回的值的类型和最终值的内容,以便您可以站在存储的值上。
要与现实生活平行的,从功能属性指派值,而不检查和过滤他们就像只要他们与您联系,只有在面试他们雇用的人 - 因此每一次 - 你需要把他们在一项任务上。不用说它繁琐,杂乱,容易出错。