Laravel。有没有办法将 API 资源作为参数传递?
Laravel. Is there a way to pass an API Resource as a parameter?
我熟悉 Laravel Api Resources 的用法,我曾将它用于单个元素,例如:
return new JsonResource($theResource)
以及具有以下元素的集合:
return JsonResource::Collection($theResources)
但现在我想将 jsonResource 传递给另一个 class 或方法,并且能够做同样的事情,例如做类似的事情:
$theJsonResource->collection($theResources)
有办法吗?
在 PHP 中,您可以将 类 传递给方法或将 类 作为字符串引用传递,这将对您的情况有所帮助。新关键字相当简单,对于静态调用,您必须使用一些 PHP 技巧。
class ResponseBuilder
{
private $resource;
public function __construct($resource)
{
$this->resource = $resource;
}
public function buildRessource($resource)
{
return new $this->resource($resource);
}
public function buildRessources($resources)
{
return call_user_func($this->resource .'::Collection', $resources);
}
}
我熟悉 Laravel Api Resources 的用法,我曾将它用于单个元素,例如:
return new JsonResource($theResource)
以及具有以下元素的集合:
return JsonResource::Collection($theResources)
但现在我想将 jsonResource 传递给另一个 class 或方法,并且能够做同样的事情,例如做类似的事情:
$theJsonResource->collection($theResources)
有办法吗?
在 PHP 中,您可以将 类 传递给方法或将 类 作为字符串引用传递,这将对您的情况有所帮助。新关键字相当简单,对于静态调用,您必须使用一些 PHP 技巧。
class ResponseBuilder
{
private $resource;
public function __construct($resource)
{
$this->resource = $resource;
}
public function buildRessource($resource)
{
return new $this->resource($resource);
}
public function buildRessources($resources)
{
return call_user_func($this->resource .'::Collection', $resources);
}
}