我有以下两个数组(var_dumped
):
array (size=3)
'param' =>
array (size=1)
0 => string 'Example' (length=7)
'page-template' => string 'general' (length=7)
'action' =>
object(Closure)[2125]
array (size=3)
'param' =>
array (size=1)
0 => string 'Example' (length=7)
'page-template' => string 'general' (length=7)
'action' =>
object(Closure)[2126]
现在它们是相同的,它们甚至调用相同的函数(在'action'
中),但由于关闭,我不能对它们===
进行调用,所以我写了这个检查:
foreach(self::$registeredRoutes[$routeName] as $routeActions) {
if (!is_callable($action) && !is_callable($routeActions)) {
if (isset($routeActions['param']) && isset($action['param'])
&& $routeActions['param'] === $action['param'] &&
isset($routeActions['page-template']) &&
isset($action['page-template']) &&
$routeActions['page-template'] === $action['page-template']
) {
var_dump('hello');
}
}
}
接受它让我想因为if语句而呕吐。在我仍然得到相同结果的地方,是否有一种更清晰,可测试的方法?
答案 0 :(得分:0)
现在它们是相同的,它们甚至调用相同的功能
显然不是。
$func = function() {
// ...
};
$arr1 = array(
'param' => array('Example'),
'page-template' => 'general',
'action' => $func);
$arr2 = array(
'param' => array('Example'),
'page-template' => 'general',
'action' => $func);
var_dump($arr1 === $arr2); // true
您也可以不使用匿名函数。