/** * @covers \ProxyManager\Configuration::getGeneratorStrategy * @covers \ProxyManager\Configuration::setGeneratorStrategy */ public function testSetGetGeneratorStrategy() { $this->assertInstanceOf('ProxyManager\\GeneratorStrategy\\GeneratorStrategyInterface', $this->configuration->getGeneratorStrategy()); $strategy = $this->getMock('ProxyManager\\GeneratorStrategy\\GeneratorStrategyInterface'); $this->configuration->setGeneratorStrategy($strategy); $this->assertSame($strategy, $this->configuration->getGeneratorStrategy()); }
/** * Generates the provided `$proxyClassName` from the given `$className` and `$proxyParameters` * @param string $proxyClassName * @param string $className * @param array $proxyParameters * * @return void */ private function generateProxyClass($proxyClassName, $className, array $proxyParameters) { $className = $this->configuration->getClassNameInflector()->getUserClassName($className); $phpClass = new ClassGenerator($proxyClassName); $this->getGenerator()->generate(new ReflectionClass($className), $phpClass); $phpClass = $this->configuration->getClassSignatureGenerator()->addSignature($phpClass, $proxyParameters); $this->configuration->getGeneratorStrategy()->generate($phpClass); $this->configuration->getProxyAutoloader()->__invoke($proxyClassName); }
/** * Generate a proxy from a class name * @param string $className * @return string proxy class name */ protected function generateProxy($className) { if (!isset($this->generatedClasses[$className])) { $this->generatedClasses[$className] = $this->inflector->getProxyClassName($className, array('factory' => get_class($this))); } $proxyClassName = $this->generatedClasses[$className]; if (!class_exists($proxyClassName)) { $className = $this->inflector->getUserClassName($className); $phpClass = new ClassGenerator($proxyClassName); $this->getGenerator()->generate(new ReflectionClass($className), $phpClass); $this->configuration->getGeneratorStrategy()->generate($phpClass); $this->configuration->getProxyAutoloader()->__invoke($proxyClassName); } return $proxyClassName; }