在PHP中创建条件堆栈的巧妙方法

在PHP中创建条件堆栈的巧妙方法,php,mysql,logic,structure,Php,Mysql,Logic,Structure,我正在开发票务网站(PHP+MySql)其中提供了许多用户类型,如用户,经理,首席执行官等。。。这里我有一个逻辑问题 当某些用户在“票证窗体”下查看票证时,显示的按钮数量可能会根据不同的条件而有所不同,例如:用户类型、票证状态或票证是否已由经理批准等 因此,我的问题是如何在php中创建一些逻辑结构,以处理多个条件,并在将来轻松修改它们(添加新条件,删除旧条件) 我的目标是不要把它硬放在php中,许多ifs都像if(A=B&&C=D…{/*show confirm button*/} 我当前的id

我正在开发票务网站(PHP+MySql)其中提供了许多用户类型,如
用户
经理
首席执行官
等。。。这里我有一个逻辑问题

当某些用户在“票证窗体”下查看票证时,显示的按钮数量可能会根据不同的条件而有所不同,例如:用户类型、票证状态或票证是否已由经理批准等

因此,我的问题是如何在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 :-(";
}