在此代码中,变量$controller
已初始化并使用(代码来自Prestashop v1.6)
$current_index = 'index.php'.(($controller = Tools::getValue('controller')) ? '?controller='.$controller : '');
在这个if块中哪些不正确?该块如何评估?
这被认为是最佳做法吗?
答案 0 :(得分:1)
$current_index
评估为false, index.php
将等于字符串Tools::getValue('controller')
。
如果将块转换为非三元操作,您可以看到分配更清晰:
$controller = Tools::getValue('controller');
if ($controller) {
$parameter = '?controller=' . $controller;
} else {
$parameter = '';
}
$current_index = 'index.php' . $parameter;
三元操作是最佳操作,但在示例代码中,由于URL参数分配和三元操作都在一行上发生,因此您并未完全清楚。
答案 1 :(得分:0)
将其重写为,
$controller = Tools::getValue('controller');
$current_index = 'index.php'.(($controller) ? '?controller='.$controller : '');