PHP强制传入状态是类常量之一


PHP enforce passed in status is one of class constants

我正在编写一个包装类,用于更新php中API作业的状态。如何检查传递到update_status()的状态是否是定义的常量之一?有更好的方法来构建它吗?

class ApiJob {
    const QUEUED = "QUEUED";
    const RUNNING = "RUNNING";
    const FAILED = "FAILED";
    const COMPLETE = "COMPLETE";
    public static function update_status($id, $new_status) {
    }
}

用法是:

ApiJob::update_status(43842, ApiJob::RUNNING);

在update_status函数中,检查$new_status是否是4个选项之一,如果不是,则抛出异常。

switch ($new_status)
{
    case self::QUEUED:
    case self::RUNNING:
    case self::FAILED:
    case self::COMPLETE:
        // Set the status here. 
        break;
    default:
        throw new Exception("Status is not allowed.");
}