Chris@14: Chris@14: * Chris@14: * For the full copyright and license information, please view the LICENSE Chris@14: * file that was distributed with this source code. Chris@14: */ Chris@14: Chris@14: declare(strict_types=1); Chris@14: Chris@14: namespace SebastianBergmann\ObjectReflector; Chris@14: Chris@14: class ObjectReflector Chris@14: { Chris@14: /** Chris@14: * @param object $object Chris@14: * Chris@14: * @return array Chris@14: * Chris@14: * @throws InvalidArgumentException Chris@14: */ Chris@14: public function getAttributes($object): array Chris@14: { Chris@14: if (!is_object($object)) { Chris@14: throw new InvalidArgumentException; Chris@14: } Chris@14: Chris@14: $attributes = []; Chris@14: $className = get_class($object); Chris@14: Chris@14: foreach ((array) $object as $name => $value) { Chris@14: $name = explode("\0", (string) $name); Chris@14: Chris@14: if (count($name) === 1) { Chris@14: $name = $name[0]; Chris@14: } else { Chris@14: if ($name[1] !== $className) { Chris@14: $name = $name[1] . '::' . $name[2]; Chris@14: } else { Chris@14: $name = $name[2]; Chris@14: } Chris@14: } Chris@14: Chris@14: $attributes[$name] = $value; Chris@14: } Chris@14: Chris@14: return $attributes; Chris@14: } Chris@14: }