Matthias Andreas Benkard | 7b2a3a1 | 2021-08-16 10:57:25 +0200 | [diff] [blame^] | 1 | <?php |
| 2 | |
| 3 | /* |
| 4 | * This file is part of the Symfony package. |
| 5 | * |
| 6 | * (c) Fabien Potencier <fabien@symfony.com> |
| 7 | * |
| 8 | * For the full copyright and license information, please view the LICENSE |
| 9 | * file that was distributed with this source code. |
| 10 | */ |
| 11 | |
| 12 | namespace Symfony\Component\VarDumper\Caster; |
| 13 | |
| 14 | use Doctrine\Common\Proxy\Proxy as CommonProxy; |
| 15 | use Doctrine\ORM\PersistentCollection; |
| 16 | use Doctrine\ORM\Proxy\Proxy as OrmProxy; |
| 17 | use Symfony\Component\VarDumper\Cloner\Stub; |
| 18 | |
| 19 | /** |
| 20 | * Casts Doctrine related classes to array representation. |
| 21 | * |
| 22 | * @author Nicolas Grekas <p@tchwork.com> |
| 23 | * |
| 24 | * @final |
| 25 | */ |
| 26 | class DoctrineCaster |
| 27 | { |
| 28 | public static function castCommonProxy(CommonProxy $proxy, array $a, Stub $stub, bool $isNested) |
| 29 | { |
| 30 | foreach (['__cloner__', '__initializer__'] as $k) { |
| 31 | if (\array_key_exists($k, $a)) { |
| 32 | unset($a[$k]); |
| 33 | ++$stub->cut; |
| 34 | } |
| 35 | } |
| 36 | |
| 37 | return $a; |
| 38 | } |
| 39 | |
| 40 | public static function castOrmProxy(OrmProxy $proxy, array $a, Stub $stub, bool $isNested) |
| 41 | { |
| 42 | foreach (['_entityPersister', '_identifier'] as $k) { |
| 43 | if (\array_key_exists($k = "\0Doctrine\\ORM\\Proxy\\Proxy\0".$k, $a)) { |
| 44 | unset($a[$k]); |
| 45 | ++$stub->cut; |
| 46 | } |
| 47 | } |
| 48 | |
| 49 | return $a; |
| 50 | } |
| 51 | |
| 52 | public static function castPersistentCollection(PersistentCollection $coll, array $a, Stub $stub, bool $isNested) |
| 53 | { |
| 54 | foreach (['snapshot', 'association', 'typeClass'] as $k) { |
| 55 | if (\array_key_exists($k = "\0Doctrine\\ORM\\PersistentCollection\0".$k, $a)) { |
| 56 | $a[$k] = new CutStub($a[$k]); |
| 57 | } |
| 58 | } |
| 59 | |
| 60 | return $a; |
| 61 | } |
| 62 | } |