File "BaseJsonResource.php"
Full Path: /home/bettaeza/flyinsyria.com/.well-known/Resources/BaseJsonResource.php
File size: 1.46 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace App\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Http\Resources\MissingValue;
class BaseJsonResource extends JsonResource
{
public $needs = [];
public function __construct($resource,$needs = [])
{
parent::__construct($resource);
if(is_array($needs)) $this->needs = $needs;
}
/**
* Retrieve a value based on a given condition.
*
* @param string $key
* @param mixed $value
* @param mixed $default
* @return \Illuminate\Http\Resources\MissingValue|mixed
*/
protected function whenNeed($key, $value, $default = null)
{
if (in_array($key,$this->needs)) {
return value($value);
}
return func_num_args() === 3 ? value($default) : new MissingValue;
}
/**
* Create a new anonymous resource collection.
*
* @param mixed $resource
* @param array $needs
*
* @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection
*/
public static function collection($resource,$needs = [])
{
return tap(new BaseResourceCollection($resource, static::class), function ($collection) use ($needs) {
$collection->needs = $needs;
if (property_exists(static::class, 'preserveKeys')) {
$collection->preserveKeys = (new static([]))->preserveKeys === true;
}
});
}
}