Restler class 具有基于方法类型的必需参数

Restler class with required params based on method type

假设我有这个用于我的 API 类

class EventInfo {
    /// @var int $start The Start time
    public $start

    /// @var string $url The URL for the event {@required false}
    public $url = null;
}

现在我想将 EventInfo 用于我的 POST 和我的 PATCH 方法。当我执行 POST 时,需要设置 $start 属性。 $url 将作为可选参数出现。

但是,当我执行 PATCH 操作时,不再需要 $start。我可能会超过新的开始时间,但我可能不会。

如何指定?

首先,使用DocBlock语法

class EventInfo {
    /**
     * @var int $start The Start time
     */
    public $start;

    /**
     * @var string $url The URL for the event {@required false}
     */
    public $url = null;
}

这将设置默认的必需属性和可选属性。然后,您可以使用 {@required } 注释在 api 方法级别控制所需的属性。请参阅下面的示例

class Home
{
    public function index()
    {
        return array(
            'success' => array(
                'code' => 200,
                'message' => 'Restler is up and running!',
            ),
        );
    }

    public function patch(EventInfo $info)
    {
        return func_get_args();
    }

    /**
     * @param EventInfo $info {@required start,url}
     * @return array
     */
    public function post(EventInfo $info)
    {
        return func_get_args();
    }
}

您也可以添加 {@properties start} 类似的注释来限制 API 方法需要哪些属性。