检查函数中可选参数类型的最佳方法是什么?到目前为止,我看到的每一个例子都是下面的第二种风格。这是比选项1更好的方法吗,还是仅仅因为你不能直接检查参数中的某些东西?我需要我的可选参数是一个数组,如果它被传递。
1)
public function foo($reqData, array $optData = NULL) {
...
if ($optData) {
foreach ($optData...
}
}
或2)
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
如果PHP有函数重载,那就不是问题了
OOP的一个有趣之处在于添加约束以避免bug。如果你遵循这个想法,第一种方法似乎更好。
许多PHP开发人员并不像使用C那样严格使用编码,因为PHP本质上是灵活/宽松的,并且没有习惯成为最严格的限制。