正在检查归类为业务逻辑的SESSION变量的值


Is checking the value of SESSION variables classed as business logic?

我正在开发我的web应用程序。我有这段代码:

<?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()">';
?>

基本上,当用户登录时,我设置会话变量,指示用户是否被授权进行更改和添加记录。因此,当他们到达主页时,我使用这段代码来决定是否显示添加和编辑按钮。

这段代码是否打破了逻辑/表示分离的规则?如果是这样,我该如何实现分离?

我没有使用任何web框架

虽然View中的条件非常好,但View不应该尝试自己从任何来源获取任何数据。这不是它的角色,它应该只处理控制器(或呈现器,取决于你的应用程序架构)提供给它的数据。你的视图不应该不知道背后的逻辑,为什么editadd模式之间切换。它只需要知道在排序时如何做。在你的情况下,控制器应该检查$_SESSION并决定什么模式,添加或编辑你的视图应该显示,并将该决定传递给你的视图(即action_mode = edit|add)执行。

PS:我建议养成习惯,总是把代码块(甚至是一行代码)放在{, }括号中。