Php If语句评估和最佳实践
在此代码中,变量Php If语句评估和最佳实践,php,if-statement,Php,If Statement,在此代码中,变量$controller已初始化并使用(代码来自Prestashop v1.6) 在这个if块中,什么是不正确的?如何评估该区块 这被认为是最佳实践吗?将其改写为: $controller = Tools::getValue('controller'); $current_index = 'index.php'.(($controller) ? '?controller='.$controller : ''); 如果Tools::getValue('controller'
$controller
已初始化并使用(代码来自Prestashop v1.6)
在这个if块中,什么是不正确的?如何评估该区块
这被认为是最佳实践吗?将其改写为:
$controller = Tools::getValue('controller');
$current_index = 'index.php'.(($controller) ? '?controller='.$controller : '');
如果
Tools::getValue('controller')
的计算结果为false,则$current\u index
将等于字符串index.php
如果将块转换为非三元操作,则可以更清楚地看到赋值:
$controller = Tools::getValue('controller');
if ($controller) {
$parameter = '?controller=' . $controller;
} else {
$parameter = '';
}
$current_index = 'index.php' . $parameter;
三值操作是最佳实践,但在您提供的示例代码中,由于URL参数分配和三值操作都发生在一行上,因此并不完全清楚。如果$controller被分配了一个falsy值,则将执行第二个条件。null也是falsy吗?是的。请参阅并查看与==表的松散比较
$controller = Tools::getValue('controller');
if ($controller) {
$parameter = '?controller=' . $controller;
} else {
$parameter = '';
}
$current_index = 'index.php' . $parameter;