This repository has been archived by the owner on Jan 30, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 41
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #89 from weierophinney/feature/hydrator-suffix
Add the suffix "Hydrator" to all hydrators
- Loading branch information
Showing
31 changed files
with
753 additions
and
636 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,95 +1,17 @@ | ||
<?php | ||
/** | ||
* @see https://github.com/zendframework/zend-hydrator for the canonical source repository | ||
* @copyright Copyright (c) 2010-2018 Zend Technologies USA Inc. (http://www.zend.com) | ||
* @copyright Copyright (c) 2018 Zend Technologies USA Inc. (https://www.zend.com) | ||
* @license https://github.com/zendframework/zend-hydrator/blob/master/LICENSE.md New BSD License | ||
*/ | ||
|
||
declare(strict_types=1); | ||
|
||
namespace Zend\Hydrator; | ||
|
||
use function array_merge; | ||
use function is_callable; | ||
use function method_exists; | ||
use function sprintf; | ||
|
||
class ArraySerializable extends AbstractHydrator | ||
/** | ||
* @deprecated since 3.0.0; to be removed in 4.0.0. Use ArraySerializableHydrator instead. | ||
*/ | ||
class ArraySerializable extends ArraySerializableHydrator | ||
{ | ||
/** | ||
* Extract values from the provided object | ||
* | ||
* Extracts values via the object's getArrayCopy() method. | ||
* | ||
* {@inheritDoc} | ||
* @throws Exception\BadMethodCallException for an $object not implementing getArrayCopy() | ||
*/ | ||
public function extract(object $object) : array | ||
{ | ||
if (! method_exists($object, 'getArrayCopy') || ! is_callable([$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); | ||
|
||
// replace the original key with extracted, if differ | ||
if ($extractedName !== $name) { | ||
unset($data[$name]); | ||
$name = $extractedName; | ||
} | ||
|
||
$data[$name] = $this->extractValue($name, $value, $object); | ||
} | ||
|
||
return $data; | ||
} | ||
|
||
/** | ||
* Hydrate an object | ||
* | ||
* Hydrates an object by passing $data to either its exchangeArray() or | ||
* populate() method. | ||
* | ||
* {@inheritDoc} | ||
* @throws Exception\BadMethodCallException for an $object not implementing exchangeArray() or populate() | ||
*/ | ||
public function hydrate(array $data, object $object) | ||
{ | ||
$replacement = []; | ||
foreach ($data as $key => $value) { | ||
$name = $this->hydrateName($key, $data); | ||
$replacement[$name] = $this->hydrateValue($name, $value, $data); | ||
} | ||
|
||
if (method_exists($object, 'exchangeArray') && is_callable([$object, 'exchangeArray'])) { | ||
// Ensure any previously populated values not in the replacement | ||
// remain following population. | ||
if (method_exists($object, 'getArrayCopy') && is_callable([$object, 'getArrayCopy'])) { | ||
$original = $object->getArrayCopy($object); | ||
$replacement = array_merge($original, $replacement); | ||
} | ||
$object->exchangeArray($replacement); | ||
return $object; | ||
} | ||
|
||
if (method_exists($object, 'populate') && is_callable([$object, 'populate'])) { | ||
$object->populate($replacement); | ||
return $object; | ||
} | ||
|
||
throw new Exception\BadMethodCallException( | ||
sprintf('%s expects the provided object to implement exchangeArray() or populate()', __METHOD__) | ||
); | ||
} | ||
} |
Oops, something went wrong.