示例#1
0
function _main_()
{
    simple_autoloader_register('My', __DIR__, true);
    if (!class_exists('My\\DiDefinition', true)) {
        echo 'COMPILING DEFINITION (and writing to disk at My\\DiDefinition.php)' . PHP_EOL;
        $compiler = new Zend\Di\Definition\Compiler();
        $compiler->addCodeScannerDirectory(new Zend\Code\Scanner\DirectoryScanner(__DIR__ . '/My/'));
        $definition = $compiler->compile();
        $codeGenerator = new Zend\CodeGenerator\Php\PhpFile();
        $codeGenerator->setClass($class = new Zend\CodeGenerator\Php\PhpClass());
        $class->setNamespaceName('My');
        $class->setName('DiDefinition');
        $class->setExtendedClass('\\Zend\\Di\\Definition\\ArrayDefinition');
        $class->setMethod(array('name' => '__construct', 'body' => 'parent::__construct(' . var_export($definition->toArray(), true) . ');'));
        file_put_contents(__DIR__ . '/My/DiDefinition.php', $codeGenerator->generate());
        unset($compiler, $definition, $codeGenerator, $class);
    } else {
        echo 'USING DEFINITION' . PHP_EOL;
    }
    $definition = new My\DiDefinition();
    $di = new Zend\Di\DependencyInjector();
    $di->setDefinition($definition);
    $di->getInstanceManager()->setProperty('My\\DbAdapter', 'username', 'foo');
    $di->getInstanceManager()->setProperty('My\\DbAdapter', 'password', 'bar');
    $c = $di->get('My\\RepositoryA');
    echo $c . PHP_EOL;
}
示例#2
0
 function _main_()
 {
     $di = new Zend\Di\DependencyInjector();
     $di->getInstanceManager()->setProperty('My\\A', 'username', 'foo');
     $di->getInstanceManager()->setProperty('My\\A', 'password', 'bar');
     $c = $di->get('My\\C');
     echo $c;
     $d = $di->get('My\\C');
     echo $d;
     echo PHP_EOL . PHP_EOL;
 }
示例#3
0
function _main_()
{
    simple_autoloader_register('My', __DIR__);
    $compiler = new Zend\Di\Definition\Compiler();
    $compiler->addCodeScannerDirectory(new Zend\Code\Scanner\DirectoryScanner(__DIR__ . '/My/'));
    $definition = $compiler->compile();
    $di = new Zend\Di\DependencyInjector();
    $di->setDefinition($definition);
    $dbAdapter = new My\DbAdapter('foo', 'bar');
    //$di->getInstanceManager()->setProperty('My\Mapper', 'dbAdapter', $dbAdapter);
    $c = $di->get('My\\RepositoryA', array('dbAdapter' => $dbAdapter));
    echo $c . PHP_EOL;
    echo 'Hash for dbAdapter injected: ' . spl_object_hash($dbAdapter) . PHP_EOL;
}
示例#4
0
function _main_()
{
    simple_autoloader_register('My', __DIR__);
    if (!file_exists(__DIR__ . '/di-definition.php')) {
        echo 'COMPILING DEFINITION (run again to delete di-definition.php)' . PHP_EOL;
        $compiler = new Zend\Di\Definition\Compiler();
        $compiler->addCodeScannerDirectory(new Zend\Code\Scanner\DirectoryScanner(__DIR__ . '/My/'));
        $definition = $compiler->compile();
        file_put_contents(__DIR__ . '/di-definition.php', '<?php return ' . var_export($definition->toArray(), true) . ';');
    } else {
        echo 'USING DEFINITION (and unlinking it)' . PHP_EOL;
        $definition = new Zend\Di\Definition\ArrayDefinition(include __DIR__ . '/di-definition.php');
        unlink(__DIR__ . '/di-definition.php');
    }
    $di = new Zend\Di\DependencyInjector();
    $di->setDefinition($definition);
    $di->getInstanceManager()->setProperty('My\\DbAdapter', 'username', 'foo');
    $di->getInstanceManager()->setProperty('My\\DbAdapter', 'password', 'bar');
    $c = $di->get('My\\RepositoryA');
    echo $c . PHP_EOL;
}
示例#5
0
function _main_()
{
    simple_autoloader_register('My', __DIR__);
    $configValues = new Zend\Config\Ini(__DIR__ . '/di-config.ini', 'production');
    $diConfig = new Zend\Di\Configuration($configValues->di);
    $di = new Zend\Di\DependencyInjector($diConfig);
    $im = $di->getInstanceManager();
    $c = $di->get('my-repository', array('dbAdapter' => 'my-dbAdapter'));
    echo $c . PHP_EOL . PHP_EOL;
    $d = $di->get('my-repository');
    echo $d . PHP_EOL . PHP_EOL;
    $e = $di->get('my-repository', array('dbAdapter' => 'my-dbAdapter'));
    echo $e . PHP_EOL . PHP_EOL;
    $f = $di->get('my-repository');
    echo $f . PHP_EOL . PHP_EOL;
    echo 'Is it the same object (c && d): ';
    var_dump($c === $d);
    echo PHP_EOL;
    echo 'Is it the same object (c && e): ';
    var_dump($c === $e);
    echo PHP_EOL;
    echo 'Is it the same object (d && f): ';
    var_dump($d === $f);
    echo PHP_EOL;
}
示例#6
0
function _main_()
{
    simple_autoloader_register('My', __DIR__);
    $di = new Zend\Di\DependencyInjector();
    $im = $di->getInstanceManager();
    $im->addAlias('my-repository', 'My\\RepositoryA');
    $im->addAlias('my-mapper', 'My\\Mapper');
    $im->addAlias('my-dbAdapter', 'My\\DbAdapter');
    $im->setProperties('My\\DbAdapter', array('username' => 'readonlyuser', 'password' => 'bar'));
    $im->addPreferredInstance('my-repository', 'my-mapper');
    $im->addPreferredInstance('my-mapper', 'my-dbAdapter');
    // another alias
    $im->addAlias('my-rwDbAdapter', 'My\\DbAdapter', array('username' => 'readwriteuser'));
    $c = $di->get('my-repository', array('dbAdapter' => 'my-rwDbAdapter'));
    echo $c . PHP_EOL . PHP_EOL;
    $d = $di->get('my-repository');
    echo $d . PHP_EOL . PHP_EOL;
    $e = $di->get('my-repository');
    echo $e . PHP_EOL . PHP_EOL;
    $f = $di->get('my-repository', array('dbAdapter' => 'my-rwDbAdapter'));
    echo $f . PHP_EOL . PHP_EOL;
}
示例#7
0
<?php

$config = new Zend\Config\Ini('di.ini');
$diConfig = new Zend\Di\Configuration($config->di);
$di = new Zend\Di\DependencyInjector($diConfig);
$contact = $di->get('contact');