class ObjectProperty in Zircon Profile 8
Same name in this branch
- 8 vendor/zendframework/zend-hydrator/src/ObjectProperty.php \Zend\Hydrator\ObjectProperty
- 8 vendor/zendframework/zend-stdlib/src/Hydrator/ObjectProperty.php \Zend\Stdlib\Hydrator\ObjectProperty
Same name and namespace in other branches
- 8.0 vendor/zendframework/zend-hydrator/src/ObjectProperty.php \Zend\Hydrator\ObjectProperty
Hierarchy
- class \Zend\Hydrator\AbstractHydrator implements FilterEnabledInterface, HydratorInterface, NamingStrategyEnabledInterface, StrategyEnabledInterface
- class \Zend\Hydrator\ObjectProperty
Expanded class hierarchy of ObjectProperty
1 file declares its use of ObjectProperty
- ObjectProperty.php in vendor/
zendframework/ zend-stdlib/ src/ Hydrator/ ObjectProperty.php
File
- vendor/
zendframework/ zend-hydrator/ src/ ObjectProperty.php, line 15
Namespace
Zend\HydratorView source
class ObjectProperty extends AbstractHydrator {
/**
* @var array[] indexed by class name and then property name
*/
private static $skippedPropertiesCache = [];
/**
* {@inheritDoc}
*
* Extracts the accessible non-static properties of the given $object.
*
* @throws Exception\BadMethodCallException for a non-object $object
*/
public function extract($object) {
if (!is_object($object)) {
throw new Exception\BadMethodCallException(sprintf('%s expects the provided $object to be a PHP object)', __METHOD__));
}
$data = get_object_vars($object);
$filter = $this
->getFilter();
foreach ($data as $name => $value) {
// Filter keys, removing any we don't want
if (!$filter
->filter($name)) {
unset($data[$name]);
continue;
}
// Replace name if extracted differ
$extracted = $this
->extractName($name, $object);
if ($extracted !== $name) {
unset($data[$name]);
$name = $extracted;
}
$data[$name] = $this
->extractValue($name, $value, $object);
}
return $data;
}
/**
* {@inheritDoc}
*
* Hydrate an object by populating public properties
*
* Hydrates an object by setting public properties of the object.
*
* @throws Exception\BadMethodCallException for a non-object $object
*/
public function hydrate(array $data, $object) {
if (!is_object($object)) {
throw new Exception\BadMethodCallException(sprintf('%s expects the provided $object to be a PHP object)', __METHOD__));
}
$properties =& self::$skippedPropertiesCache[get_class($object)];
if (!isset($properties)) {
$reflection = new ReflectionClass($object);
$properties = array_fill_keys(array_map(function (ReflectionProperty $property) {
return $property
->getName();
}, $reflection
->getProperties(ReflectionProperty::IS_PRIVATE + ReflectionProperty::IS_PROTECTED + ReflectionProperty::IS_STATIC)), true);
}
foreach ($data as $name => $value) {
$property = $this
->hydrateName($name, $data);
if (isset($properties[$property])) {
continue;
}
$object->{$property} = $this
->hydrateValue($property, $value, $data);
}
return $object;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
AbstractHydrator:: |
protected | property | Composite to filter the methods, that need to be hydrated | |
AbstractHydrator:: |
protected | property | An instance of NamingStrategy\NamingStrategyInterface | |
AbstractHydrator:: |
protected | property | The list with strategies that this hydrator has. | |
AbstractHydrator:: |
public | function |
Add a new filter to take care of what needs to be hydrated.
To exclude e.g. the method getServiceLocator: Overrides FilterEnabledInterface:: |
1 |
AbstractHydrator:: |
public | function |
Adds the given strategy under the given name. Overrides StrategyEnabledInterface:: |
|
AbstractHydrator:: |
public | function | Convert a name for extraction. If no naming strategy exists, the plain value is returned. | |
AbstractHydrator:: |
public | function | Converts a value for extraction. If no strategy exists the plain value is returned. | |
AbstractHydrator:: |
public | function | Get the filter instance | |
AbstractHydrator:: |
public | function |
Gets the naming strategy. Overrides NamingStrategyEnabledInterface:: |
|
AbstractHydrator:: |
public | function |
Gets the strategy with the given name. Overrides StrategyEnabledInterface:: |
|
AbstractHydrator:: |
public | function |
Check whether a specific filter exists at key $name or not Overrides FilterEnabledInterface:: |
|
AbstractHydrator:: |
public | function |
Checks if a naming strategy exists. Overrides NamingStrategyEnabledInterface:: |
|
AbstractHydrator:: |
public | function |
Checks if the strategy with the given name exists. Overrides StrategyEnabledInterface:: |
|
AbstractHydrator:: |
public | function | Converts a value for hydration. If no naming strategy exists, the plain value is returned. | |
AbstractHydrator:: |
public | function | Converts a value for hydration. If no strategy exists the plain value is returned. | |
AbstractHydrator:: |
public | function |
Remove a filter from the composition.
To not extract "has" methods, you simply need to unregister it Overrides FilterEnabledInterface:: |
1 |
AbstractHydrator:: |
public | function |
Removes the naming strategy Overrides NamingStrategyEnabledInterface:: |
1 |
AbstractHydrator:: |
public | function |
Removes the strategy with the given name. Overrides StrategyEnabledInterface:: |
|
AbstractHydrator:: |
public | function |
Adds the given naming strategy Overrides NamingStrategyEnabledInterface:: |
1 |
AbstractHydrator:: |
public | function | Initializes a new instance of this class. | 1 |
ObjectProperty:: |
private static | property | ||
ObjectProperty:: |
public | function |
Extracts the accessible non-static properties of the given $object. Overrides ExtractionInterface:: |
|
ObjectProperty:: |
public | function |
Hydrate an object by populating public properties Overrides HydrationInterface:: |