我正在开发我的网络应用程序。 我有这段代码:
<?php
if($_SESSION['add'] == 1)
echo '<input type="button" name="add" id="add" value="Add" onclick="add()" >';
if($_SESSION['edit'] == 1)
echo '<input type="button" name="edit" id="edit" value="Edit" onclick="edit()">';
?>
基本上,当用户登录时,我会设置 session 变量,指示该用户是否有权进行更改和添加记录。因此,当他们到达主页时,我使用此代码来决定是否显示我的添加和编辑按钮。
这段代码是否打破了逻辑/表现分离的规则?如果是这样,我怎样才能实现分离?
我没有使用任何网络框架。
最佳答案
虽然 View 中的条件非常好,但您的 View 不应尝试自行从任何来源获取任何数据。这不是它的角色,它应该只对你的 Controller (或 Presenter,取决于你的应用程序架构)提供给它的数据起作用。您的 View 不应该不知道为什么 和何时 在edit
和add
模式之间切换背后的逻辑。它只需要在收到命令时知道如何去做。在你的情况下, Controller 应该检查 $_SESSION
并决定什么模式,添加或编辑你的 View 应该显示并将该决定传递给你的 View (即 action_mode
= edit|add
) 用于哑执行。
PS:我建议养成总是将代码块(甚至单行代码)放在 {
、}
括号中的习惯。
关于php - 检查 SESSION 变量的值是否属于业务逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38196579/