BaseDTO.php 947 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. namespace Knuckles\Camel;
  3. use Illuminate\Contracts\Support\Arrayable;
  4. use Spatie\DataTransferObject\DataTransferObject;
  5. class BaseDTO extends DataTransferObject implements Arrayable
  6. {
  7. /**
  8. * @param array|self $data
  9. *
  10. * @return static
  11. */
  12. public static function create($data): self
  13. {
  14. if ($data instanceof static) {
  15. return $data;
  16. }
  17. return new static($data);
  18. }
  19. protected function parseArray(array $array): array
  20. {
  21. // Reimplementing here so our DTOCollection items can be recursively toArray'ed
  22. foreach ($array as $key => $value) {
  23. if ($value instanceof Arrayable) {
  24. $array[$key] = $value->toArray();
  25. continue;
  26. }
  27. if (! is_array($value)) {
  28. continue;
  29. }
  30. $array[$key] = $this->parseArray($value);
  31. }
  32. return $array;
  33. }
  34. }