Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php declare(strict_types=1);
2
/*
3
 * This file is part of sebastian/object-reflector.
4
 *
5
 * (c) Sebastian Bergmann <sebastian@phpunit.de>
6
 *
7
 * For the full copyright and license information, please view the LICENSE
8
 * file that was distributed with this source code.
9
 */
10
namespace SebastianBergmann\ObjectReflector;
11
 
12
use function count;
13
use function explode;
14
use function get_class;
15
use function is_object;
16
 
17
class ObjectReflector
18
{
19
    /**
20
     * @param object $object
21
     *
22
     * @throws InvalidArgumentException
23
     */
24
    public function getAttributes($object): array
25
    {
26
        if (!is_object($object)) {
27
            throw new InvalidArgumentException;
28
        }
29
 
30
        $attributes = [];
31
        $className  = get_class($object);
32
 
33
        foreach ((array) $object as $name => $value) {
34
            $name = explode("\0", (string) $name);
35
 
36
            if (count($name) === 1) {
37
                $name = $name[0];
38
            } else {
39
                if ($name[1] !== $className) {
40
                    $name = $name[1] . '::' . $name[2];
41
                } else {
42
                    $name = $name[2];
43
                }
44
            }
45
 
46
            $attributes[$name] = $value;
47
        }
48
 
49
        return $attributes;
50
    }
51
}