Update to drupal 8.0.0-rc1. For more information, see https://www.drupal.org/node/2582663
This commit is contained in:
parent
eb34d130a8
commit
f32e58e4b1
8476 changed files with 211648 additions and 170042 deletions
95
vendor/zendframework/zend-hydrator/src/Reflection.php
vendored
Normal file
95
vendor/zendframework/zend-hydrator/src/Reflection.php
vendored
Normal file
|
@ -0,0 +1,95 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework (http://framework.zend.com/)
|
||||
*
|
||||
* @link http://github.com/zendframework/zf2 for the canonical source repository
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
|
||||
namespace Zend\Hydrator;
|
||||
|
||||
use ReflectionClass;
|
||||
use ReflectionProperty;
|
||||
|
||||
class Reflection extends AbstractHydrator
|
||||
{
|
||||
/**
|
||||
* Simple in-memory array cache of ReflectionProperties used.
|
||||
* @var ReflectionProperty[]
|
||||
*/
|
||||
protected static $reflProperties = [];
|
||||
|
||||
/**
|
||||
* Extract values from an object
|
||||
*
|
||||
* @param object $object
|
||||
* @return array
|
||||
*/
|
||||
public function extract($object)
|
||||
{
|
||||
$result = [];
|
||||
foreach (self::getReflProperties($object) as $property) {
|
||||
$propertyName = $this->extractName($property->getName(), $object);
|
||||
if (!$this->filterComposite->filter($propertyName)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$value = $property->getValue($object);
|
||||
$result[$propertyName] = $this->extractValue($propertyName, $value, $object);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Hydrate $object with the provided $data.
|
||||
*
|
||||
* @param array $data
|
||||
* @param object $object
|
||||
* @return object
|
||||
*/
|
||||
public function hydrate(array $data, $object)
|
||||
{
|
||||
$reflProperties = self::getReflProperties($object);
|
||||
foreach ($data as $key => $value) {
|
||||
$name = $this->hydrateName($key, $data);
|
||||
if (isset($reflProperties[$name])) {
|
||||
$reflProperties[$name]->setValue($object, $this->hydrateValue($name, $value, $data));
|
||||
}
|
||||
}
|
||||
return $object;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a reflection properties from in-memory cache and lazy-load if
|
||||
* class has not been loaded.
|
||||
*
|
||||
* @param string|object $input
|
||||
* @throws Exception\InvalidArgumentException
|
||||
* @return ReflectionProperty[]
|
||||
*/
|
||||
protected static function getReflProperties($input)
|
||||
{
|
||||
if (is_object($input)) {
|
||||
$input = get_class($input);
|
||||
} elseif (!is_string($input)) {
|
||||
throw new Exception\InvalidArgumentException('Input must be a string or an object.');
|
||||
}
|
||||
|
||||
if (isset(static::$reflProperties[$input])) {
|
||||
return static::$reflProperties[$input];
|
||||
}
|
||||
|
||||
static::$reflProperties[$input] = [];
|
||||
$reflClass = new ReflectionClass($input);
|
||||
$reflProperties = $reflClass->getProperties();
|
||||
|
||||
foreach ($reflProperties as $property) {
|
||||
$property->setAccessible(true);
|
||||
static::$reflProperties[$input][$property->getName()] = $property;
|
||||
}
|
||||
|
||||
return static::$reflProperties[$input];
|
||||
}
|
||||
}
|
Reference in a new issue