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; }
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; }
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; }
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; }
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; }
<?php $config = file_exists(__DIR__ . '/config.php') ? __DIR__ . '/config.php' : __DIR__ . '/config.dist.php'; include $config; // error_reporting & display_errors error_reporting(32767); ini_set('display_errors', 1); // bootstrap simple_autoloader_register('Zend', ZF2_PATH); $exampleToRun = $_SERVER['argv'][1]; if (strpos($exampleToRun, '.php') === false) { $exampleToRun = rtrim($exampleToRun, '\\/') . DIRECTORY_SEPARATOR . '_main_.php'; } include __DIR__ . DIRECTORY_SEPARATOR . ltrim($exampleToRun, '\\/'); if (strpos($exampleToRun, '_main_.php') !== false) { _main_(); } /** * Functions */ function simple_autoloader_register($namespace, $directory, $checkFile = false) { spl_autoload_register(function ($class) use($namespace, $directory, $checkFile) { if (strpos($class, $namespace . '\\') !== 0) { return; } $file = rtrim($directory, '\\/') . DIRECTORY_SEPARATOR . str_replace('\\', DIRECTORY_SEPARATOR, $class) . '.php'; if ($checkFile && !file_exists($file)) { return; } return include $file;