Subversion-Projekte lars-tiefland.laravel_shop

Revision

Revision 148 | Details | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
namespace Illuminate\Database\Eloquent\Casts;
4
 
5
use Illuminate\Contracts\Database\Eloquent\Castable;
6
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
7
 
8
class AsArrayObject implements Castable
9
{
10
    /**
11
     * Get the caster class to use when casting from / to this cast target.
12
     *
13
     * @param  array  $arguments
399 lars 14
     * @return CastsAttributes<ArrayObject<array-key, mixed>, iterable>
148 lars 15
     */
16
    public static function castUsing(array $arguments)
17
    {
18
        return new class implements CastsAttributes
19
        {
20
            public function get($model, $key, $value, $attributes)
21
            {
22
                if (! isset($attributes[$key])) {
23
                    return;
24
                }
25
 
26
                $data = json_decode($attributes[$key], true);
27
 
28
                return is_array($data) ? new ArrayObject($data) : null;
29
            }
30
 
31
            public function set($model, $key, $value, $attributes)
32
            {
33
                return [$key => json_encode($value)];
34
            }
35
 
36
            public function serialize($model, string $key, $value, array $attributes)
37
            {
38
                return $value->getArrayCopy();
39
            }
40
        };
41
    }
42
}