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

时间:2017-01-29 07:40:04

标签: restler

假设我将其用于我的API类

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

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

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

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

如何指定?

1 个答案:

答案 0 :(得分:0)

首先,使用 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方法所需的属性。