123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- <?php
- namespace Zend\Stdlib\Hydrator;
- use Zend\Stdlib\Exception;
- class ArraySerializable extends AbstractHydrator
- {
-
- public function extract($object)
- {
- if (!is_callable(array($object, 'getArrayCopy'))) {
- throw new Exception\BadMethodCallException(sprintf(
- '%s expects the provided object to implement getArrayCopy()', __METHOD__
- ));
- }
- $data = $object->getArrayCopy();
- $filter = $this->getFilter();
- foreach ($data as $name => $value) {
- if (!$filter->filter($name)) {
- unset($data[$name]);
- continue;
- }
- $extractedName = $this->extractName($name, $object);
-
- if ($extractedName !== $name) {
- unset($data[$name]);
- $name = $extractedName;
- }
- $data[$name] = $this->extractValue($name, $value, $object);
- }
- return $data;
- }
-
- public function hydrate(array $data, $object)
- {
- $replacement = array();
- foreach ($data as $key => $value) {
- $name = $this->hydrateName($key, $data);
- $replacement[$name] = $this->hydrateValue($name, $value, $data);
- }
- if (is_callable(array($object, 'exchangeArray'))) {
- $object->exchangeArray($replacement);
- } elseif (is_callable(array($object, 'populate'))) {
- $object->populate($replacement);
- } else {
- throw new Exception\BadMethodCallException(sprintf(
- '%s expects the provided object to implement exchangeArray() or populate()', __METHOD__
- ));
- }
- return $object;
- }
- }
|