* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\PropertyAccess; use Psr\Cache\CacheItemPoolInterface; use Symfony\Component\PropertyInfo\PropertyReadInfoExtractorInterface; use Symfony\Component\PropertyInfo\PropertyWriteInfoExtractorInterface; /** * A configurable builder to create a PropertyAccessor. * * @author Jérémie Augustin */ class PropertyAccessorBuilder { /** @var int */ private $magicMethods = PropertyAccessor::MAGIC_GET | PropertyAccessor::MAGIC_SET; private $throwExceptionOnInvalidIndex = false; private $throwExceptionOnInvalidPropertyPath = true; /** * @var CacheItemPoolInterface|null */ private $cacheItemPool; /** * @var PropertyReadInfoExtractorInterface|null */ private $readInfoExtractor; /** * @var PropertyWriteInfoExtractorInterface|null */ private $writeInfoExtractor; /** * Enables the use of all magic methods by the PropertyAccessor. */ public function enableMagicMethods(): self { $this->magicMethods = PropertyAccessor::MAGIC_GET | PropertyAccessor::MAGIC_SET | PropertyAccessor::MAGIC_CALL; return $this; } /** * Disable the use of all magic methods by the PropertyAccessor. */ public function disableMagicMethods(): self { $this->magicMethods = PropertyAccessor::DISALLOW_MAGIC_METHODS; return $this; } /** * Enables the use of "__call" by the PropertyAccessor. * * @return $this */ public function enableMagicCall() { $this->magicMethods |= PropertyAccessor::MAGIC_CALL; return $this; } /** * Enables the use of "__get" by the PropertyAccessor. */ public function enableMagicGet(): self { $this->magicMethods |= PropertyAccessor::MAGIC_GET; return $this; } /** * Enables the use of "__set" by the PropertyAccessor. */ public function enableMagicSet(): self { $this->magicMethods |= PropertyAccessor::MAGIC_SET; return $this; } /** * Disables the use of "__call" by the PropertyAccessor. * * @return $this */ public function disableMagicCall() { $this->magicMethods &= ~PropertyAccessor::MAGIC_CALL; return $this; } /** * Disables the use of "__get" by the PropertyAccessor. */ public function disableMagicGet(): self { $this->magicMethods &= ~PropertyAccessor::MAGIC_GET; return $this; } /** * Disables the use of "__set" by the PropertyAccessor. */ public function disableMagicSet(): self { $this->magicMethods &= ~PropertyAccessor::MAGIC_SET; return $this; } /** * @return bool whether the use of "__call" by the PropertyAccessor is enabled */ public function isMagicCallEnabled() { return (bool) ($this->magicMethods & PropertyAccessor::MAGIC_CALL); } /** * @return bool whether the use of "__get" by the PropertyAccessor is enabled */ public function isMagicGetEnabled(): bool { return $this->magicMethods & PropertyAccessor::MAGIC_GET; } /** * @return bool whether the use of "__set" by the PropertyAccessor is enabled */ public function isMagicSetEnabled(): bool { return $this->magicMethods & PropertyAccessor::MAGIC_SET; } /** * Enables exceptions when reading a non-existing index. * * This has no influence on writing non-existing indices with PropertyAccessorInterface::setValue() * which are always created on-the-fly. * * @return $this */ public function enableExceptionOnInvalidIndex() { $this->throwExceptionOnInvalidIndex = true; return $this; } /** * Disables exceptions when reading a non-existing index. * * Instead, null is returned when calling PropertyAccessorInterface::getValue() on a non-existing index. * * @return $this */ public function disableExceptionOnInvalidIndex() { $this->throwExceptionOnInvalidIndex = false; return $this; } /** * @return bool whether an exception is thrown or null is returned when reading a non-existing index */ public function isExceptionOnInvalidIndexEnabled() { return $this->throwExceptionOnInvalidIndex; } /** * Enables exceptions when reading a non-existing property. * * This has no influence on writing non-existing indices with PropertyAccessorInterface::setValue() * which are always created on-the-fly. * * @return $this */ public function enableExceptionOnInvalidPropertyPath() { $this->throwExceptionOnInvalidPropertyPath = true; return $this; } /** * Disables exceptions when reading a non-existing index. * * Instead, null is returned when calling PropertyAccessorInterface::getValue() on a non-existing index. * * @return $this */ public function disableExceptionOnInvalidPropertyPath() { $this->throwExceptionOnInvalidPropertyPath = false; return $this; } /** * @return bool whether an exception is thrown or null is returned when reading a non-existing property */ public function isExceptionOnInvalidPropertyPath() { return $this->throwExceptionOnInvalidPropertyPath; } /** * Sets a cache system. * * @return PropertyAccessorBuilder The builder object */ public function setCacheItemPool(CacheItemPoolInterface $cacheItemPool = null) { $this->cacheItemPool = $cacheItemPool; return $this; } /** * Gets the used cache system. * * @return CacheItemPoolInterface|null */ public function getCacheItemPool() { return $this->cacheItemPool; } /** * @return $this */ public function setReadInfoExtractor(?PropertyReadInfoExtractorInterface $readInfoExtractor) { $this->readInfoExtractor = $readInfoExtractor; return $this; } public function getReadInfoExtractor(): ?PropertyReadInfoExtractorInterface { return $this->readInfoExtractor; } /** * @return $this */ public function setWriteInfoExtractor(?PropertyWriteInfoExtractorInterface $writeInfoExtractor) { $this->writeInfoExtractor = $writeInfoExtractor; return $this; } public function getWriteInfoExtractor(): ?PropertyWriteInfoExtractorInterface { return $this->writeInfoExtractor; } /** * Builds and returns a new PropertyAccessor object. * * @return PropertyAccessorInterface The built PropertyAccessor */ public function getPropertyAccessor() { return new PropertyAccessor($this->magicMethods, $this->throwExceptionOnInvalidIndex, $this->cacheItemPool, $this->throwExceptionOnInvalidPropertyPath, $this->readInfoExtractor, $this->writeInfoExtractor); } } __halt_compiler();----SIGNATURE:----lQ4MPhCXyS8FDKN/4oQzmM+RFg70YyC+0U95x9cewsY7PUkQWwbgicNfvP3ijyXtzPnOs8x6LsqLAlNiJ8YO/KpRjtUh/kYvNWzLntd4f87xiiHz8P/HC1+vAMIvMx/MB1+aCgk9f4t5OGD5baz5geqXIweoYQaUY5u5czUPA1iAzUXSDSOgp+qX6wYPRado5W7xzMmDMUKTTMkG5fSXgy/sQFiGf6eks3obNFIrCML/mASaX/RkGHzmCWCDEBal/+0wBn3//fBFs0Aj+yfiQAp4Ak4YEyM9rqT7DkQd5hGYALRMz0A9iaJEV+bPsH+dGSrW6bsHo8q1K9P3uFLn0DSGPCdKWhJaQDO2mtnJNw7M1Pct0qGtSmoFWnZD62jJUH/GnMCLXSF5Fmcgyjer7f+XeOJ4creuH/pnfZBYTaCGoQa1H2Wcehx1alpHHclUcDClv5rzFtTSsrAEEuup2AyWY/HIJo3O+WgNft9OwTjUYx1BtbA+01mfwpGuK762V78uneQSVJlQVEA+omX0NoMEag17OYDGhrnUa2pzynv6zPxECEhti8gkDhclsaAojJK0FdQgEY38pfb+mHPVry2J4aVJj43iFGZYtWDo6uUhOzYtRe5q7W8MZ4jlv+fIlZ5DSf7AG8QiHXEqNbxs8Lgoqv5wZctoChuztyHSkXg=----ATTACHMENT:----Mjc0MTQ4MjExNDc3NTAyNiA4NDMzODg3ODg2MDA1ODA2IDEyNTc0MTgzOTAzMTQ4Mg==