PHP:使用GOTO跳过HTML的呈现
如果有人在其他地方问过这个问题,我会道歉。我确实搜索过,但我认为这是一个利基问题 我目前使用一个简单的GOTO逻辑,根据用户权限跳过某些HTML元素的呈现。我想知道这种方法是否有根本性的错误,如果有,首选的替代方案是什么 我问的一个主要原因是,我正在慢慢地将现有代码迁移到一种更MVC的方法,我不确定GOTO是否与MVC特别兼容 非常感谢您的回答 例如:PHP:使用GOTO跳过HTML的呈现,php,Php,如果有人在其他地方问过这个问题,我会道歉。我确实搜索过,但我认为这是一个利基问题 我目前使用一个简单的GOTO逻辑,根据用户权限跳过某些HTML元素的呈现。我想知道这种方法是否有根本性的错误,如果有,首选的替代方案是什么 我问的一个主要原因是,我正在慢慢地将现有代码迁移到一种更MVC的方法,我不确定GOTO是否与MVC特别兼容 非常感谢您的回答 例如: <?php $isUserAdmin = 0; ?> <html> <?php if(!$isUserAdmin
<?php
$isUserAdmin = 0;
?>
<html>
<?php if(!$isUserAdmin) {goto notAdmin;} ?>
<a href="/admin.php">Admin Control Panel</a>
<?php notAdmin: ?>
<a href="/vieworders.php">View Orders</a>
</html>
另外,在我想要明确限制的页面上,有一个实际的明确检查,它将重定向这些页面。通常不建议使用
goto
,因为它可能导致所谓的意大利面代码。意大利面代码是goto
语句向您发送所有源代码的地方,而不是像预期的那样从上到下运行代码,特别是对于非OOP解释的代码
在您的特定情况下,您可以简单地使用if
语句
<?php if ($isUserAdmin): ?>
<a href="/admin.php">Admin Control Panel</a>
<?php endif; ?>
<a href="/vieworders.php">View Orders</a>
完全有道理,谢谢。MVC模型是否普遍接受这种方法?因为if语句必须放在视图中。非常感谢!以我的经验,是的。例如,Laravel使用这种方法,例如,根据用户是否登录,在主菜单上显示登录或注销按钮。明白了,所有这些对我来说都很有意义-我将开始迁移到这种方法。谢谢:)。