vendor/denios/data-transfer-object/src/Shared/DataTransferObject/DataTransferObject.php line 17

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Denios\Data\Shared\DataTransferObject;
  4. use Denios\Data\Shared\ValueObject\ValueObject;
  5. use Spatie\DataTransferObject\FieldValidator;
  6. use Spatie\DataTransferObject\ValueCaster;
  7. /**
  8. * Class DataTransferObject (value object support)
  9. *
  10. * @author Sebastian Gieselmann <seg@denios.de>
  11. * @package Denios\Data\Shared
  12. */
  13. abstract class DataTransferObject extends \Spatie\DataTransferObject\DataTransferObject implements \JsonSerializable
  14. {
  15. /**
  16. * Casts value
  17. *
  18. * @param \Spatie\DataTransferObject\ValueCaster $valueCaster
  19. * @param \Spatie\DataTransferObject\FieldValidator $fieldValidator
  20. * @param mixed $value
  21. *
  22. * @return mixed
  23. */
  24. #[\Override]
  25. protected function castValue(ValueCaster $valueCaster, FieldValidator $fieldValidator, $value)
  26. {
  27. return $valueCaster->cast($value, $fieldValidator);
  28. }
  29. /**
  30. * Gets ValueCaster
  31. *
  32. * @return ValueCaster
  33. */
  34. #[\Override]
  35. protected function getValueCaster(): ValueCaster
  36. {
  37. return new \Denios\Data\Shared\DataTransferObject\ValueCaster();
  38. }
  39. /**
  40. * Json serialization
  41. *
  42. * @return array
  43. */
  44. #[\Override]
  45. public function jsonSerialize() {
  46. return $this->toArray();
  47. }
  48. /**
  49. * Parses Array
  50. *
  51. * @param array $array
  52. *
  53. * @return array
  54. */
  55. #[\Override]
  56. protected function parseArray(array $array): array
  57. {
  58. foreach ($array as $key => $value) {
  59. if ($value instanceof DataTransferObject || $value instanceof DataTransferObjectCollection) {
  60. $array[$key] = $value->toArray();
  61. continue;
  62. }
  63. // make ValueObject instances exportable
  64. if ($value instanceof ValueObject) {
  65. $array[$key] = $value->value();
  66. continue;
  67. }
  68. if (!is_array($value)) {
  69. continue;
  70. }
  71. $array[$key] = $this->parseArray($value);
  72. }
  73. return $array;
  74. }
  75. }