如果声明评估和最佳实践

时间:2014-07-05 06:14:54

标签: php if-statement

在此代码中,变量$controller已初始化并使用(代码来自Prestashop v1.6)

$current_index = 'index.php'.(($controller = Tools::getValue('controller')) ? '?controller='.$controller : '');

在这个if块中哪些不正确?该块如何评估?

这被认为是最佳做法吗?

2 个答案:

答案 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 : '');
相关问题