Laravel。有没有办法将API资源作为参数传递?

时间:2019-12-24 22:54:15

标签: php laravel laravel-6

我熟悉Laravel Api Resources的用法,我已经将其用于单个元素,例如:

return new JsonResource($theResource)

以及具有以下元素的集合:

return JsonResource::Collection($theResources)

但是现在我想将jsonResource传递给另一个类或方法,并能够执行相同的操作,例如执行以下操作:

$theJsonResource->collection($theResources)

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

在PHP中,您可以将类作为字符串引用传递给方法或类,这将对您有帮助。 new关键字非常简单,通过静态调用,您必须使用一些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);
    }
}