/** * @param \Nette\DI\Compiler $compiler * @return string */ protected function fixCompile(\Nette\DI\Compiler $compiler) { $code = $this->compiler->compile(); if (!is_array($code)) { return $code; } return implode("\n\n\n", $code); }
protected function compile() { $result = $this->compiler->compile(); if (is_array($result)) { return implode("\n\n\n", $result); } return $result; }
public function testGettingImageStorage() { eval($this->compiler->compile()); /** @var \Nette\DI\Container $container */ $container = new Container(); $this->assertNotNull($class = $container->getByType(\WebChemistry\Images\IImageStorage::class)); $this->assertInstanceOf(\WebChemistry\Images\IImageStorage::class, $class); $this->assertInstanceOf(\WebChemistry\Images\AbstractStorage::class, $class); }
public function testEvents() { $this->compiler->setClassName('Container_Events'); eval($this->compiler->compile()); /** @var \Nette\DI\Container $container */ $container = new Container_Events(); /** @var _MockStorage $class */ $this->assertNotNull($class = $container->getByType(\WebChemistry\Images\IImageStorage::class)); $this->assertInstanceOf(\WebChemistry\Images\IImageStorage::class, $class); $this->assertInstanceOf(_MockStorage::class, $class); $events = $class->getEvents()['onCreate']; $this->assertTrue(is_callable($events[0])); $events[0](); $this->assertTrue(_Events::$called); _Events::$called = FALSE; $this->assertTrue(is_callable($events[1])); $events[1](); $this->assertTrue(_Events::$called); }
/** * @return array of (code, file[]) */ protected function generate($class, $generator) { $compiler = new Compiler(); $compiler->getContainerBuilder()->setClassName($class); $code = call_user_func_array($generator, [&$compiler]); $code = $code ?: implode("\n\n\n", $compiler->compile()); $files = $compiler->getDependencies(); $files = call_user_func($this->filter, $files); $files = array_combine($files, $files); return array("<?php\n{$code}", serialize(@array_map('filemtime', $files))); }
/** * @return array of (code, file[]) */ protected function generate($class, $generator) { $compiler = new Compiler(); $compiler->getContainerBuilder()->setClassName($class); $code = call_user_func_array($generator, array(&$compiler)); $code = $code ?: implode("\n\n\n", $compiler->compile()); $files = $compiler->getDependencies(); $files = $files ? array_combine($files, $files) : array(); // workaround for PHP 5.3 array_combine return array("<?php\n{$code}", serialize(@array_map('filemtime', $files))); }
/** * @param Compiler $compiler * @return string */ public function generateContainer(Compiler $compiler) { // Load configs $loader = new Loader(); $compiler->addConfig(['parameters' => $this->parameters]); foreach ($this->configs as $config) { $compiler->addConfig($loader->load($config)); } $compiler->addDependencies($loader->getDependencies()); // Exclude classes $builder = $compiler->getContainerBuilder(); $builder->addExcludedClasses($this->excludedClasses); // Fire events foreach ($this->onCompile as $cb) { call_user_func_array($cb, [$compiler]); } // Compile container $classes = $compiler->compile(); $classes[0]->setExtends(PiDiContainer::class); return implode("\n", []) . "\n\n" . implode("\n\n\n", $classes); }
public function testCompile() { $this->compiler->compile(); }
/** * @return array of (code, file[]) */ protected function generate($class, $generator) { $compiler = new Compiler(); $compiler->setClassName($class); $code = call_user_func_array($generator, [&$compiler]) ?: $compiler->compile(); return ["<?php\n{$code}", serialize($compiler->exportDependencies())]; }