Blame | Letzte Änderung | Log anzeigen | RSS feed
<?phpnamespace Illuminate\Http\Resources\Json;use ArrayAccess;use Illuminate\Container\Container;use Illuminate\Contracts\Routing\UrlRoutable;use Illuminate\Contracts\Support\Arrayable;use Illuminate\Contracts\Support\Responsable;use Illuminate\Database\Eloquent\JsonEncodingException;use Illuminate\Http\Resources\ConditionallyLoadsAttributes;use Illuminate\Http\Resources\DelegatesToResource;use JsonSerializable;class JsonResource implements ArrayAccess, JsonSerializable, Responsable, UrlRoutable{use ConditionallyLoadsAttributes, DelegatesToResource;/*** The resource instance.** @var mixed*/public $resource;/*** The additional data that should be added to the top-level resource array.** @var array*/public $with = [];/*** The additional meta data that should be added to the resource response.** Added during response construction by the developer.** @var array*/public $additional = [];/*** The "data" wrapper that should be applied.** @var string|null*/public static $wrap = 'data';/*** Create a new resource instance.** @param mixed $resource* @return void*/public function __construct($resource){$this->resource = $resource;}/*** Create a new resource instance.** @param mixed ...$parameters* @return static*/public static function make(...$parameters){return new static(...$parameters);}/*** Create a new anonymous resource collection.** @param mixed $resource* @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection*/public static function collection($resource){return tap(new AnonymousResourceCollection($resource, static::class), function ($collection) {if (property_exists(static::class, 'preserveKeys')) {$collection->preserveKeys = (new static([]))->preserveKeys === true;}});}/*** Resolve the resource to an array.** @param \Illuminate\Http\Request|null $request* @return array*/public function resolve($request = null){$data = $this->toArray($request = $request ?: Container::getInstance()->make('request'));if ($data instanceof Arrayable) {$data = $data->toArray();} elseif ($data instanceof JsonSerializable) {$data = $data->jsonSerialize();}return $this->filter((array) $data);}/*** Transform the resource into an array.** @param \Illuminate\Http\Request $request* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable*/public function toArray($request){if (is_null($this->resource)) {return [];}return is_array($this->resource)? $this->resource: $this->resource->toArray();}/*** Convert the model instance to JSON.** @param int $options* @return string** @throws \Illuminate\Database\Eloquent\JsonEncodingException*/public function toJson($options = 0){$json = json_encode($this->jsonSerialize(), $options);if (json_last_error() !== JSON_ERROR_NONE) {throw JsonEncodingException::forResource($this, json_last_error_msg());}return $json;}/*** Get any additional data that should be returned with the resource array.** @param \Illuminate\Http\Request $request* @return array*/public function with($request){return $this->with;}/*** Add additional meta data to the resource response.** @param array $data* @return $this*/public function additional(array $data){$this->additional = $data;return $this;}/*** Get the JSON serialization options that should be applied to the resource response.** @return int*/public function jsonOptions(){return 0;}/*** Customize the response for a request.** @param \Illuminate\Http\Request $request* @param \Illuminate\Http\JsonResponse $response* @return void*/public function withResponse($request, $response){//}/*** Set the string that should wrap the outer-most resource array.** @param string $value* @return void*/public static function wrap($value){static::$wrap = $value;}/*** Disable wrapping of the outer-most resource array.** @return void*/public static function withoutWrapping(){static::$wrap = null;}/*** Transform the resource into an HTTP response.** @param \Illuminate\Http\Request|null $request* @return \Illuminate\Http\JsonResponse*/public function response($request = null){return $this->toResponse($request ?: Container::getInstance()->make('request'));}/*** Create an HTTP response that represents the object.** @param \Illuminate\Http\Request $request* @return \Illuminate\Http\JsonResponse*/public function toResponse($request){return (new ResourceResponse($this))->toResponse($request);}/*** Prepare the resource for JSON serialization.** @return array*/public function jsonSerialize(): array{return $this->resolve(Container::getInstance()->make('request'));}}