PHP:我应该什么时候检查数组的可选参数类型?
检查函数中可选参数类型的最佳方法是什么?到目前为止,我看到的每个例子都是下面的风格2。这是一种比选项1更好的方法,还是仅仅因为您无法直接检查参数中的某些内容?如果传递了可选参数,则需要将其设置为数组 (一) 或 (二)PHP:我应该什么时候检查数组的可选参数类型?,php,arrays,parameters,null,optional,Php,Arrays,Parameters,Null,Optional,检查函数中可选参数类型的最佳方法是什么?到目前为止,我看到的每个例子都是下面的风格2。这是一种比选项1更好的方法,还是仅仅因为您无法直接检查参数中的某些内容?如果传递了可选参数,则需要将其设置为数组 (一) 或 (二) 第二个选项通常更可取,因为如果传入的不是数组,则会出现致命错误: function foo1 (array $opt) { var_dump($opt); } function foo2 ($opt = null) { var_dump($opt); } foo2(array(
第二个选项通常更可取,因为如果传入的不是数组,则会出现致命错误:
function foo1 (array $opt) { var_dump($opt); }
function foo2 ($opt = null) { var_dump($opt); }
foo2(array('bar')); // dumps out an array with 'bar' in it
foo1('bar'); // catchable fatal error
如果PHP有函数重载,这不会是一个问题OOP的一个兴趣是添加约束以避免bug。如果你遵循这个想法,第一种方法似乎更好
很多PHP开发人员没有像C中那样严格地使用编码,因为PHP本质上是灵活的/允许的,并且不会让习惯成为最严格的限制。两者如何
if($optData!==NULL&&is_array($optData))
在第一个示例中,$optData需要作为数组提供。第二个变量可以是单值变量,也可以是数组。这就是为什么要用“is_数组”来研究它。两者都在做同样的事情我知道他们都以同样的结果结束,我想知道我是否遗漏了什么,因为我能找到的每个例子都是第二种风格,而第一种风格对我来说更直观(至少来自我的强类型语言背景)。
public function foo($reqData, $optData = NULL) {
...
if (is_array($optData)) {
foreach ($optData...
}
}
function foo1 (array $opt) { var_dump($opt); }
function foo2 ($opt = null) { var_dump($opt); }
foo2(array('bar')); // dumps out an array with 'bar' in it
foo1('bar'); // catchable fatal error