Example #1
0
    public function testCompilerCompilesAgainstConstructorInjectionAssets()
    {
        $definition = new CompilerDefinition;
        $definition->addDirectory(__DIR__ . '/../TestAsset/CompilerClasses');
        $definition->compile();
        
        $this->assertTrue($definition->hasClass('ZendTest\Di\TestAsset\CompilerClasses\A'));
        
        $assertClasses = array(
            'ZendTest\Di\TestAsset\CompilerClasses\A',
            'ZendTest\Di\TestAsset\CompilerClasses\B',
            'ZendTest\Di\TestAsset\CompilerClasses\C',
            'ZendTest\Di\TestAsset\CompilerClasses\D',
        );
        $classes = $definition->getClasses();
        foreach ($assertClasses as $assertClass) {
            $this->assertContains($assertClass, $classes);
        }

        // @todo this needs to be resolved, not the short name
        // $this->assertContains('ZendTest\Di\TestAsset\CompilerClasses\C', $definition->getClassSupertypes('ZendTest\Di\TestAsset\CompilerClasses\D'));
        
        $this->assertEquals('__construct', $definition->getInstantiator('ZendTest\Di\TestAsset\CompilerClasses\A'));
        $this->assertTrue($definition->hasMethods('ZendTest\Di\TestAsset\CompilerClasses\C'));
        

        $this->assertArrayHasKey('setB', $definition->getMethods('ZendTest\Di\TestAsset\CompilerClasses\C'));
        $this->assertTrue($definition->hasMethod('ZendTest\Di\TestAsset\CompilerClasses\C', 'setB'));
        
        $this->assertEquals(
            array('ZendTest\Di\TestAsset\CompilerClasses\C::setB:0' => array('b', 'ZendTest\Di\TestAsset\CompilerClasses\B', true)),
            $definition->getMethodParameters('ZendTest\Di\TestAsset\CompilerClasses\C', 'setB')
        );
    }
Example #2
0
 public function testCompilerAllowReflectionException()
 {
     $definition = new CompilerDefinition();
     $definition->setAllowReflectionExceptions();
     $definition->addDirectory(__DIR__ . '/../TestAsset/InvalidCompilerClasses');
     $definition->compile();
     $parameters = $definition->getMethodParameters('ZendTest\\Di\\TestAsset\\InvalidCompilerClasses\\InvalidClass', '__construct');
     // The exception gets caught before the parameter's class is set
     $this->assertCount(1, current($parameters));
 }
 public function testCompilerFileScanner()
 {
     $definition = new CompilerDefinition;
     $definition->addCodeScannerFile(new FileScanner(__DIR__ . '/../TestAsset/CompilerClasses/C.php'));
     $definition->addCodeScannerFile(new FileScanner(__DIR__ . '/../TestAsset/CompilerClasses/D.php'));
     $definition->addCodeScannerFile(new FileScanner(__DIR__ . '/../TestAsset/CompilerClasses/E.php'));
     $definition->compile();
     $this->assertContains('ZendTest\Di\TestAsset\CompilerClasses\C', $definition->getClassSupertypes('ZendTest\Di\TestAsset\CompilerClasses\D'));
     $this->assertContains('ZendTest\Di\TestAsset\CompilerClasses\C', $definition->getClassSupertypes('ZendTest\Di\TestAsset\CompilerClasses\E'));
     $this->assertContains('ZendTest\Di\TestAsset\CompilerClasses\D', $definition->getClassSupertypes('ZendTest\Di\TestAsset\CompilerClasses\E'));
 }
Example #4
0
 /**
  * Compile Di definitions
  *
  * @return array
  */
 private function getDefinition()
 {
     if (!file_exists(CACHE_PATH . $this->definitionFile)) {
         $diCompiler = new CompilerDefinition();
         $diCompiler->addDirectory(ROOT_PATH . 'system/mobicms');
         $diCompiler->compile();
         $definition = $diCompiler->toArrayDefinition()->toArray();
         file_put_contents(CACHE_PATH . $this->definitionFile, '<?php return ' . var_export($definition, true) . ';');
         return $definition;
     } else {
         return include CACHE_PATH . $this->definitionFile;
     }
 }
Example #5
0
 /**
  * @group ZF2-308
  */
 public function testStaticMethodsNotIncludedInDefinitions()
 {
     $definition = new CompilerDefinition();
     $definition->addDirectory(__DIR__ . '/../TestAsset/SetterInjection');
     $definition->compile();
     $this->assertTrue($definition->hasMethod('ZendTest\\Di\\TestAsset\\SetterInjection\\StaticSetter', 'setFoo'));
     $this->assertFalse($definition->hasMethod('ZendTest\\Di\\TestAsset\\SetterInjection\\StaticSetter', 'setName'));
 }
#!/usr/bin/env php
<?php 
use Zend\Code\Scanner\FileScanner as CodeFileScanner;
use Zend\Di\Definition\CompilerDefinition;
// Autoloader
$vendorDirname = __DIR__ . '/../._test/ZendSkeletonApplication/vendor';
$loader = (require $vendorDirname . '/autoload.php');
$loader->add('WebinoImageThumb', __DIR__ . '/../src');
// Compile Di Definition
$diCompiler = new CompilerDefinition();
$diCompiler->addDirectory(__DIR__ . '/../src');
foreach (array() as $file) {
    $diCompiler->addCodeScannerFile(new CodeFileScanner($file));
}
$diCompiler->compile();
$definition = $diCompiler->toArrayDefinition()->toArray();
$dir = __DIR__ . '/../data/di';
is_dir($dir) or mkdir($dir);
file_put_contents($dir . '/definition.php', '<?php ' . PHP_EOL . 'return ' . var_export($definition, true) . ';' . PHP_EOL);
 public function testHasMethodParameters()
 {
     $definition = new CompilerDefinition();
     $definition->addDirectory(__DIR__ . '/../TestAsset/ConstructorInjection');
     $definition->addDirectory(__DIR__ . '/../TestAsset/SetterInjection');
     $definition->addDirectory(__DIR__ . '/../TestAsset/CompilerClasses');
     $definition->compile();
     // constructor injection
     $this->assertTrue($definition->hasMethodParameters('ZendTest\\Di\\TestAsset\\ConstructorInjection\\B', '__construct'));
     // setter injection
     $this->assertTrue($definition->hasMethodParameters('ZendTest\\Di\\TestAsset\\SetterInjection\\B', 'setA'));
     // setter injection with method from derived class
     $this->assertTrue($definition->hasMethodParameters('ZendTest\\Di\\TestAsset\\CompilerClasses\\D', 'setB'));
     // class does not exist
     $this->assertFalse($definition->hasMethodParameters('ZendTest\\Di\\TestAsset\\ConstructorInjection\\BB', '__construct'));
     // method not existing
     $this->assertFalse($definition->hasMethodParameters('ZendTest\\Di\\TestAsset\\SetterInjection\\B', 'setB'));
     // method exists but has no parameters
     $this->assertFalse($definition->hasMethodParameters('ZendTest\\Di\\TestAsset\\SetterInjection\\StaticSetter', 'setFoo'));
 }