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

时间:2014-09-04 05:53:39

标签: php

我正在编写一个包装类,用于在 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);

1 个答案:

答案 0 :(得分:1)

在你的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.");
}