File Manager Lite
Dir:
/home/codewavebd/public_html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Casts
Upload
[..]
ArrayObject.php (952 B)
Edit
Rename
Del
AsArrayObject.php (1.27 KB)
Edit
Rename
Del
AsBinary.php (2.14 KB)
Edit
Rename
Del
AsCollection.php (2.92 KB)
Edit
Rename
Del
AsEncryptedArrayObject.php (1.42 KB)
Edit
Rename
Del
AsEncryptedCollection.php (2.98 KB)
Edit
Rename
Del
AsEnumArrayObject.php (2.79 KB)
Edit
Rename
Del
AsEnumCollection.php (2.71 KB)
Edit
Rename
Del
AsFluent.php (966 B)
Edit
Rename
Del
AsHtmlString.php (964 B)
Edit
Rename
Del
AsStringable.php (965 B)
Edit
Rename
Del
AsUri.php (929 B)
Edit
Rename
Del
Attribute.php (1.91 KB)
Edit
Rename
Del
Json.php (1.18 KB)
Edit
Rename
Del
Edit: AsEnumArrayObject.php
<?php namespace Illuminate\Database\Eloquent\Casts; use BackedEnum; use Illuminate\Contracts\Database\Eloquent\Castable; use Illuminate\Contracts\Database\Eloquent\CastsAttributes; use Illuminate\Support\Collection; use function Illuminate\Support\enum_value; class AsEnumArrayObject implements Castable { /** * Get the caster class to use when casting from / to this cast target. * * @template TEnum of \UnitEnum * * @param array{class-string<TEnum>} $arguments * @return \Illuminate\Contracts\Database\Eloquent\CastsAttributes<\Illuminate\Database\Eloquent\Casts\ArrayObject<array-key, TEnum>, iterable<TEnum>> */ public static function castUsing(array $arguments) { return new class($arguments) implements CastsAttributes { protected $arguments; public function __construct(array $arguments) { $this->arguments = $arguments; } public function get($model, $key, $value, $attributes) { if (! isset($attributes[$key])) { return; } $data = Json::decode($attributes[$key]); if (! is_array($data)) { return; } $enumClass = $this->arguments[0]; return new ArrayObject((new Collection($data))->map(function ($value) use ($enumClass) { return is_subclass_of($enumClass, BackedEnum::class) ? $enumClass::from($value) : constant($enumClass.'::'.$value); })->toArray()); } public function set($model, $key, $value, $attributes) { if ($value === null) { return [$key => null]; } $storable = []; foreach ($value as $enum) { $storable[] = $this->getStorableEnumValue($enum); } return [$key => Json::encode($storable)]; } public function serialize($model, string $key, $value, array $attributes) { return (new Collection($value->getArrayCopy())) ->map(fn ($enum) => $this->getStorableEnumValue($enum)) ->toArray(); } protected function getStorableEnumValue($enum) { if (is_string($enum) || is_int($enum)) { return $enum; } return enum_value($enum); } }; } /** * Specify the Enum for the cast. * * @param class-string $class * @return string */ public static function of($class) { return static::class.':'.$class; } }
Simpan