phpstorm 对 $this->response->item(***)->setStatusCode(***)
中的 item() 和 setStatusCode() 都有提示,
找了下 Dingo\Api\Routing\Helpers trait类 中的 __call() 方法
public function __call($method, $parameters)
{
if (method_exists($this->response(), $method) || $method == 'array') {
return call_user_func_array([$this->response(), $method], $parameters);
}
throw new ErrorException('Undefined method '.get_class($this).'::'.$method);
}
意为调用 method (也就是 array() 方法), 并将 $parameters 作为参数
也就是 Factory 类的 array() 方法, 没想到 在 Factory 类中, array() 方法也是通过 __call() 魔术方法调用的...
另: call_user_func_array() 方法: 调用回调函数,并把一个数组参数作为回调函数的参数
如果调用的方法是一个类方法, 那么用 数组将 类名和方法名 组合起来 [method] 表示回调方法