36 lines
		
	
	
		
			886 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			886 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace GuzzleHttp\Tests\Psr7;
 | 
						|
 | 
						|
class Helpers
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * @param object $object
 | 
						|
     * @param string $attributeName
 | 
						|
     */
 | 
						|
    public static function readObjectAttribute($object, $attributeName)
 | 
						|
    {
 | 
						|
        $reflector = new \ReflectionObject($object);
 | 
						|
 | 
						|
        do {
 | 
						|
            try {
 | 
						|
                $attribute = $reflector->getProperty($attributeName);
 | 
						|
 | 
						|
                if (!$attribute || $attribute->isPublic()) {
 | 
						|
                    return $object->$attributeName;
 | 
						|
                }
 | 
						|
 | 
						|
                $attribute->setAccessible(true);
 | 
						|
 | 
						|
                return $attribute->getValue($object);
 | 
						|
            } catch (\ReflectionException $e) {
 | 
						|
                // do nothing
 | 
						|
            }
 | 
						|
        } while ($reflector = $reflector->getParentClass());
 | 
						|
 | 
						|
        throw new \Exception(
 | 
						|
            sprintf('Attribute "%s" not found in object.', $attributeName)
 | 
						|
        );
 | 
						|
    }
 | 
						|
}
 |