检查SESSION变量的值是否被归类为业务逻辑?

Con*_*hop 7 html php optimization

我正在开发一个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()">';
?>
Run Code Online (Sandbox Code Playgroud)

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

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

我没有使用任何Web框架.

Mar*_*ski 10

虽然View中的条件完全正常,但您的View不应尝试自己从任何源获取任何数据.这不是它的作用,它应该只适用于您的Controller(或Presenter,取决于您的应用程序架构)提供的数据.您的视图不应该知道为什么以及何时切换editadd模式背后的逻辑 .只有在订购时才必须知道如何做到这一点.在您的情况下,Controller应检查$_SESSION并决定显示哪种模式,添加或编辑您的View,并将该决定传递给您的View(即action_mode= edit|add)以执行哑术.

PS:我建议做一个习惯,总是把代码块(甚至单行)中{,}括号中.

  • @Connor简而言之:您希望*将视图逻辑与特定的数据源"$ _SESSION"解耦.您可能在将来还有其他情况,其中除了`$ _SESSION`之外的某些东西决定特定的编辑模式,您不希望将该决定直接与`$ _SESSION`变量联系起来. (2认同)