✨ Improve model serialization
Probably going to switch to spatie's package, though
This commit is contained in:
parent
3246004e58
commit
70e4404c22
2 changed files with 39 additions and 7 deletions
|
|
@ -6,12 +6,12 @@ use App\Exceptions\Quit;
|
|||
|
||||
class Input extends Model
|
||||
{
|
||||
public ?array $files;
|
||||
public ?string $url;
|
||||
public ?string $destination;
|
||||
public ?string $title;
|
||||
public bool $low;
|
||||
public bool $sync;
|
||||
protected ?array $files = null;
|
||||
protected ?string $url = null;
|
||||
protected ?string $destination = null;
|
||||
protected ?string $title = null;
|
||||
protected bool $low = false;
|
||||
protected bool $sync = false;
|
||||
|
||||
public function assertValid(): self
|
||||
{
|
||||
|
|
|
|||
|
|
@ -3,8 +3,11 @@
|
|||
namespace App\Models;
|
||||
|
||||
use Illuminate\Support\Str;
|
||||
use Illuminate\Contracts\Support\Arrayable;
|
||||
use Illuminate\Contracts\Support\Jsonable;
|
||||
use JsonSerializable;
|
||||
|
||||
abstract class Model
|
||||
abstract class Model implements Arrayable, JsonSerializable, Jsonable
|
||||
{
|
||||
public function __construct(array $data = [])
|
||||
{
|
||||
|
|
@ -22,4 +25,33 @@ abstract class Model
|
|||
$this->$key = $value;
|
||||
}
|
||||
}
|
||||
|
||||
public function __get(string $key)
|
||||
{
|
||||
$getter = 'get' . Str::studly($key);
|
||||
if (method_exists($this, $getter)) {
|
||||
return $this->$getter($this->$key ?? null);
|
||||
} elseif (property_exists($this, $key)) {
|
||||
return $this->$key;
|
||||
}
|
||||
|
||||
throw new \OutOfBoundsException(sprintf(
|
||||
'Undefined property %s::%s', static::class, $key
|
||||
));
|
||||
}
|
||||
|
||||
public function toArray()
|
||||
{
|
||||
return get_object_vars($this);
|
||||
}
|
||||
|
||||
public function jsonSerialize()
|
||||
{
|
||||
return $this->toArray();
|
||||
}
|
||||
|
||||
public function toJson($options = 0)
|
||||
{
|
||||
return json_encode($this->jsonSerialize(), $options);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue