55use Zend \EntityMapper \Config \Container \Container ;
66use Zend \EntityMapper \Config \Entity ;
77use Zend \EntityMapper \Config \Field ;
8+ use Zend \Filter \FilterInterface ;
89
910/**
1011 * Extractor
@@ -42,11 +43,12 @@ private function getFields($object): array
4243
4344 /**
4445 * @param $object
46+ * @param bool $ignoreFilter
4547 * @return array
4648 * @throws \Zend\Cache\Exception\ExceptionInterface
4749 * @throws \Zend\EntityMapper\Config\Container\Exceptions\ItemNotFoundException
4850 */
49- public function extract ($ object ): array
51+ public function extract ($ object, $ ignoreFilter = false ): array
5052 {
5153 $ fields = $ this ->getFields ($ object );
5254 $ reflection = new \ReflectionObject ($ object );
@@ -56,7 +58,20 @@ public function extract($object): array
5658 if (!$ field ->isForeignKey () && !$ field ->isCollection ()){
5759 $ property = $ reflection ->getProperty ($ field ->getProperty ());
5860 $ property ->setAccessible (true );
59- $ array [$ field ->getAlias ()] = $ property ->getValue ($ object );
61+
62+ $ value = $ property ->getValue ($ object );
63+
64+ if ($ field ->hasOutputFilter () && $ ignoreFilter === false ) {
65+ /** @var FilterInterface $outputFilter */
66+ $ outputFilter = $ field ->getOutputFilter ();
67+ if (is_string ($ outputFilter ) && class_exists ($ outputFilter )) {
68+ $ outputFilter = new $ outputFilter ;
69+ }
70+
71+ $ value = $ outputFilter ->filter ($ value );
72+ }
73+
74+ $ array [$ field ->getAlias ()] = $ value ;
6075 }
6176 }
6277
0 commit comments