在PHP中创建条件堆栈的巧妙方法
我正在开发票务网站(PHP+MySql)其中提供了许多用户类型,如在PHP中创建条件堆栈的巧妙方法,php,mysql,logic,structure,Php,Mysql,Logic,Structure,我正在开发票务网站(PHP+MySql)其中提供了许多用户类型,如用户,经理,首席执行官等。。。这里我有一个逻辑问题 当某些用户在“票证窗体”下查看票证时,显示的按钮数量可能会根据不同的条件而有所不同,例如:用户类型、票证状态或票证是否已由经理批准等 因此,我的问题是如何在php中创建一些逻辑结构,以处理多个条件,并在将来轻松修改它们(添加新条件,删除旧条件) 我的目标是不要把它硬放在php中,许多ifs都像if(A=B&&C=D…{/*show confirm button*/} 我当前的id
用户
,经理
,首席执行官
等。。。这里我有一个逻辑问题
当某些用户在“票证窗体”下查看票证时,显示的按钮数量可能会根据不同的条件而有所不同,例如:用户类型、票证状态或票证是否已由经理批准等
因此,我的问题是如何在php中创建一些逻辑结构,以处理多个条件,并在将来轻松修改它们(添加新条件,删除旧条件)
我的目标是不要把它硬放在php中,许多ifs都像if(A=B&&C=D…{/*show confirm button*/}
我当前的idia用于包装名为user\u actions.php
,manager\u actions.php
。。。根据角色类型,在这许多ifs
条件中写入,并将其包含在票证表单include$user['type']\u actions.php
中,但这将在不同的文件中分离出许多愚蠢的ifs
所以,有谁能提出更好的方法来创造更聪明的逻辑呢?只需简单的文字描述,无需带大代码段示例
PS:我知道这不是stackoverflow的合适问题类型,但无论如何它是逻辑问题,我正在寻找聪明的解决方案我建议你看看
在某个时候,你必须写下所有这些条件。我将创建一个中心用户类,并将所有这些条件都放在其中
class User {
public function __construct($wearsTie, $looksAngry, $alktsAlot) {
$this->wearsTie = $waersTie;
$this->looksAngry = $looksAngry;
$this->talksAlot = $talksAlot;
}
public function isManager() {
return ($this->wearsTie && $this->looksAngry)
}
public function isCEO() {
return ($this->wearsTie && $this->talksAlot);
}
}
在您看来,您可以使用
$user = new User(true,true,false);
if($user->isCEO) {
echo "I'm CEO!";
} else {
echo "I whish I was CEO :-(";
}
当然,用户类的属性必须根据您的需要进行调整。尝试以下原则: 创建具有用户级别(用户、经理等)的数据库表
user\u level
使用条件创建数据库表conditions
。每个条件都链接到用户级别
表。这允许您轻松添加/编辑/删除条件
在代码中,您可以创建查询来获取特定用户级别的条件。然后循环检查所有结果,并检查是否满足条件。这样,您的代码是灵活的,而不是硬编码的,充满了IF语句访问控制、角色和基于权限的系统都是硬的。这里有一个指针:@Progrock谢谢你的链接谢谢你的建议谢谢你的建议,似乎我将根据你的建议创建这个逻辑,但有一点以其他方式,但无论如何,我接受你的答案,作为我问题的解决方案
$user = new User(true,true,false);
if($user->isCEO) {
echo "I'm CEO!";
} else {
echo "I whish I was CEO :-(";
}