Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用限制更改状态_Php_Status - Fatal编程技术网

Php 使用限制更改状态

Php 使用限制更改状态,php,status,Php,Status,我正在为记录进行状态更改实现。例如,创建记录时,记录将以“挂起”状态开始,直到管理员将其状态更改为“活动”、“拒绝”或“已撤销” 问题是,如果某个状态已从挂起更改为活动,则无法将该状态更改回挂起或拒绝。被拒绝的状态可以更改回活动状态 吊销状态不能更改为活动、挂起或拒绝。目前我有一系列if/else语句来检测这一点,但我想知道是否有更符合逻辑和标准的方法。您可以拥有一个包含所有允许转换的数组: $allowedTransitions = array( "pending" => arr

我正在为记录进行状态更改实现。例如,创建记录时,记录将以“挂起”状态开始,直到管理员将其状态更改为“活动”、“拒绝”或“已撤销”

问题是,如果某个状态已从挂起更改为活动,则无法将该状态更改回挂起或拒绝。被拒绝的状态可以更改回活动状态


吊销状态不能更改为活动、挂起或拒绝。目前我有一系列if/else语句来检测这一点,但我想知道是否有更符合逻辑和标准的方法。

您可以拥有一个包含所有允许转换的数组:

$allowedTransitions = array(
    "pending" => array("active", "rejected", "revoked"),
    "active" => array("revoked"),
);

if (in_array($after, $allowedTransitions[$before])) { //...
你可以做一些更复杂的事情来检测,如果你可以从a到B,从B到C,那么你可以从a到C(如果你想要的话)。请参阅图论的上下文