* @license MIT */ class Configuration { const DEFAULT_PROXY_NAMESPACE = 'ProxyManagerGeneratedProxy'; /** * @var string|null */ protected $proxiesTargetDir; /** * @var string */ protected $proxiesNamespace = self::DEFAULT_PROXY_NAMESPACE; /** * @var GeneratorStrategyInterface|null */ protected $generatorStrategy; /** * @var callable|null */ protected $proxyAutoloader; /** * @var ClassNameInflectorInterface|null */ protected $classNameInflector; /** * @var SignatureGeneratorInterface|null */ protected $signatureGenerator; /** * @var SignatureCheckerInterface|null */ protected $signatureChecker; /** * @var ClassSignatureGeneratorInterface|null */ protected $classSignatureGenerator; /** * @deprecated deprecated since version 0.5 * @codeCoverageIgnore */ public function setAutoGenerateProxies() { } /** * @return bool * * @deprecated deprecated since version 0.5 * @codeCoverageIgnore */ public function doesAutoGenerateProxies() { return true; } /** * @param AutoloaderInterface $proxyAutoloader */ public function setProxyAutoloader(AutoloaderInterface $proxyAutoloader) { $this->proxyAutoloader = $proxyAutoloader; } /** * @return AutoloaderInterface */ public function getProxyAutoloader() { return $this->proxyAutoloader ?: $this->proxyAutoloader = new Autoloader( new FileLocator($this->getProxiesTargetDir()), $this->getClassNameInflector() ); } /** * @param string $proxiesNamespace */ public function setProxiesNamespace($proxiesNamespace) { $this->proxiesNamespace = $proxiesNamespace; } /** * @return string */ public function getProxiesNamespace() { return $this->proxiesNamespace; } /** * @param string $proxiesTargetDir */ public function setProxiesTargetDir($proxiesTargetDir) { $this->proxiesTargetDir = (string) $proxiesTargetDir; } /** * @return string */ public function getProxiesTargetDir() { return $this->proxiesTargetDir ?: $this->proxiesTargetDir = sys_get_temp_dir(); } /** * @param GeneratorStrategyInterface $generatorStrategy */ public function setGeneratorStrategy(GeneratorStrategyInterface $generatorStrategy) { $this->generatorStrategy = $generatorStrategy; } /** * @return GeneratorStrategyInterface */ public function getGeneratorStrategy() { return $this->generatorStrategy ?: $this->generatorStrategy = new FileWriterGeneratorStrategy( new FileLocator($this->getProxiesTargetDir()) ); } /** * @param ClassNameInflectorInterface $classNameInflector */ public function setClassNameInflector(ClassNameInflectorInterface $classNameInflector) { $this->classNameInflector = $classNameInflector; } /** * @return ClassNameInflectorInterface */ public function getClassNameInflector() { return $this->classNameInflector ?: $this->classNameInflector = new ClassNameInflector($this->getProxiesNamespace()); } /** * @param SignatureGeneratorInterface $signatureGenerator */ public function setSignatureGenerator(SignatureGeneratorInterface $signatureGenerator) { $this->signatureGenerator = $signatureGenerator; } /** * @return SignatureGeneratorInterface */ public function getSignatureGenerator() { return $this->signatureGenerator ?: $this->signatureGenerator = new SignatureGenerator(); } /** * @param SignatureCheckerInterface $signatureChecker */ public function setSignatureChecker(SignatureCheckerInterface $signatureChecker) { $this->signatureChecker = $signatureChecker; } /** * @return SignatureCheckerInterface */ public function getSignatureChecker() { return $this->signatureChecker ?: $this->signatureChecker = new SignatureChecker($this->getSignatureGenerator()); } /** * @param ClassSignatureGeneratorInterface $classSignatureGenerator */ public function setClassSignatureGenerator(ClassSignatureGeneratorInterface $classSignatureGenerator) { $this->classSignatureGenerator = $classSignatureGenerator; } /** * @return ClassSignatureGeneratorInterface */ public function getClassSignatureGenerator() { return $this->classSignatureGenerator ?: new ClassSignatureGenerator($this->getSignatureGenerator()); } }