我可以将 "if" 语句与没有大括号的 "else" 部分一起使用吗?

can i use the "if" statement with the "else" part without the curly braces?

我正在尝试检查我们组织中某人曾经做过的代码,现在他走了,没有人可以帮助我。 我们在服务器中有一个自动部署 PHP 脚本,以帮助我们在进行推送时将服务器与 github 同步(webhooks)。 它曾经工作正常,但突然停止工作...... 由于我对这种程序的经验很少,我发现服务器中的 PHP 代码在 github 中进行推送时应该可以工作,基本上它应该完成自动部署的整个过程. 问题是我检查了代码,发现有些奇怪;

if ($payload->ref === 'refs/heads/development')
{   echo 'received updated in dev branch; bash/deploy_frontend2dev.sh ';
    exec('sh /var/www/html/bash/deploy_frontend2dev.sh', $output);
    var_dump($output);
}
else 
echo 'smth is called';

这里的"else"没有花括号。我知道有一种方法可以在没有大括号的情况下执行 "if" 语句,但是它是否只使用其中的一部分而不使用大括号?

另外,如果您愿意,这是来自 "exec" 的代码:

cd /var/www/html/ezmob-frontend/;
#echo "/var/www/html/ezmob-frontend/";

git pull origin development;
echo "pulling file from dev branch";

rm -R ../dashboard;
echo "dashboard is updated";

unzip ezmob-frontend-built.zip -d ../;
#echo "dashboard is updated";

chmod 777 -R dashboard;

请注意,我们在它工作时没有做任何更改,但它仍然突然停止自动部署...

谢谢。

一般来说,是的,你可以使用不带花括号的else。但正是为了避免您现在遇到的混淆,您应该考虑始终将 if 和 else 括在花括号中。

这是一个永无止境的讨论,所以请自己做出决定。这就是我认为您应该这样做的原因:

这就是我认为这是个好主意的原因。但每一个他自己。你应该选择你认为最好的。

IF ELSEIF 和 ELSE 可以像这样在没有大括号的情况下使用。

if ($foo) :
    echo 'ok';
elseif ($bar) :
    echo 'ok';
else :
    echo 'nono';
endif;

如果您的代码在 IF、ELSEIF 或 ELSE 中只有一行,那么您可以这样做:

if ($foo)
    echo 'ok';
elseif ($bar)
    echo 'ok';
else
    echo 'nono';

ifelse 接受一个代码块,该代码块可以是包裹在 {} 中的一系列语句或单个语句。

您可以使用

if
  one-statement-ending-in-semi-colon;

if {
   many-statements;
   each-ending-in-semi-colons;
}