Esempio n. 1
0
    public function testConfigurationCanConfigureInstanceManagerWithIniFile()
    {
        $ini = new \Zend\Config\Ini(__DIR__ . '/_files/sample.ini', 'section-a');
        $config = new Configuration($ini->di);
        $di = new Di();
        $di->configure($config);

        $im = $di->instanceManager();
        
        $this->assertTrue($im->hasAlias('my-repository'));
        $this->assertEquals('My\RepositoryA', $im->getClassFromAlias('my-repository'));
        
        $this->assertTrue($im->hasAlias('my-mapper'));
        $this->assertEquals('My\Mapper', $im->getClassFromAlias('my-mapper'));
        
        $this->assertTrue($im->hasAlias('my-dbAdapter'));
        $this->assertEquals('My\DbAdapter', $im->getClassFromAlias('my-dbAdapter'));
        
        $this->assertTrue($im->hasTypePreferences('my-repository'));
        $this->assertContains('my-mapper', $im->getTypePreferences('my-repository'));
        
        $this->assertTrue($im->hasTypePreferences('my-mapper'));
        $this->assertContains('my-dbAdapter', $im->getTypePreferences('my-mapper'));

        $this->assertTrue($im->hasConfiguration('My\DbAdapter'));
        $expected = array('parameters' => array('username' => 'readonly', 'password' => 'mypassword'), 'injections' => array());
        $this->assertEquals($expected, $im->getConfiguration('My\DbAdapter'));
        
        $this->assertTrue($im->hasConfiguration('my-dbAdapter'));
        $expected = array('parameters' => array('username' => 'readwrite'), 'injections' => array());
        $this->assertEquals($expected, $im->getConfiguration('my-dbAdapter'));
    }
Esempio n. 2
0
 /**
  * @param array $config
  * @return Di
  */
 protected function createDi($config)
 {
     $di = new Di();
     if (isset($config['di'])) {
         $di->configure(new DiConfig($config['di']));
     }
     return $di;
 }
Esempio n. 3
0
 public function __invoke(array $config = array())
 {
     $di = new Di();
     $diConfig = array('definition' => array('class' => array('Zend\\Cache\\Storage\\Adapter' => array('instantiator' => array('Eva\\Cache\\StorageFactory', 'factory')), 'Eva\\Cache\\StorageFactory' => array('methods' => array('factory' => array('cfg' => array('required' => true, 'type' => false)))))), 'instance' => array('Eva\\Cache\\StorageFactory' => array('parameters' => array('cfg' => array('adapter' => array('name' => 'filesystem', 'options' => array('cacheDir' => EVA_ROOT_PATH . '/data/cache/model/')), 'plugins' => array('serializer'))))));
     $globalConfig = $this->serviceLocator->get('Configuration');
     $globalConfig = isset($globalConfig['cache']['model']) ? $globalConfig['cache']['model'] : array();
     $diConfig = Config::mergeArray($diConfig, $globalConfig, $config);
     $di->configure(new DiConfig($diConfig));
     return $di->get('Eva\\Cache\\StorageFactory');
 }
Esempio n. 4
0
 /**
  * Create and return abstract factory seeded by dependency injector
  *
  * Creates and returns an abstract factory seeded by the dependency
  * injector. If the "di" key of the configuration service is set, that
  * sub-array is passed to a DiConfiguration object and used to configure
  * the DI instance. The DI instance is then used to seed the
  * DiAbstractServiceFactory, which is then registered with the service
  * manager.
  *
  * @param  ServiceLocatorInterface $serviceLocator
  * @return Di
  */
 public function createService(ServiceLocatorInterface $serviceLocator)
 {
     $di = new Di();
     $config = $serviceLocator->get('Configuration');
     if (isset($config['di'])) {
         $di->configure(new DiConfiguration($config['di']));
     }
     if ($serviceLocator instanceof ServiceManager) {
         // register as abstract factory as well:
         $serviceLocator->addAbstractFactory(new DiAbstractServiceFactory($di, DiAbstractServiceFactory::USE_SL_BEFORE_DI));
     }
     return $di;
 }
Esempio n. 5
0
 public function testConfigurationCanConfigureCompiledDefinition()
 {
     $config = ConfigFactory::fromFile(__DIR__ . '/_files/sample.php', true);
     $config = new Configuration($config->di);
     $di = new Di();
     $di->configure($config);
     $definition = $di->definitions()->getDefinitionByType('Zend\\Di\\Definition\\ArrayDefinition');
     $this->assertInstanceOf('Zend\\Di\\Definition\\ArrayDefinition', $definition);
     $this->assertTrue($di->definitions()->hasClass('My\\DbAdapter'));
     $this->assertTrue($di->definitions()->hasClass('My\\EntityA'));
     $this->assertTrue($di->definitions()->hasClass('My\\Mapper'));
     $this->assertTrue($di->definitions()->hasClass('My\\RepositoryA'));
     $this->assertTrue($di->definitions()->hasClass('My\\RepositoryB'));
     $this->assertFalse($di->definitions()->hasClass('My\\Foo'));
 }
Esempio n. 6
0
 public static function factory(array $config = array())
 {
     $defaultConfig = array('di' => array('definition' => array(), 'instance' => array('Eva\\File\\Transfer\\Adapter\\Http' => array('parameters' => array()), 'Eva\\File\\Transfer\\Transfer' => array('parameters' => array('adapter' => 'Eva\\File\\Transfer\\Adapter\\Http')))));
     $globalConfig = Api::_()->getConfig();
     if (isset($globalConfig['file_transfer'])) {
         $config = array_merge($defaultConfig, $globalConfig['file_transfer'], $config);
     } else {
         $config = array_merge($defaultConfig, $config);
     }
     $diConfig = array();
     if ($config['di']) {
         $diConfig = $config['di'];
     }
     $di = new Di();
     $di->configure(new DiConfig($diConfig));
     $fileTransfer = $di->get('Eva\\File\\Transfer\\Transfer');
     //p($fileTransfer, 1);
     //@\Zend\Di\Display\Console::export($di);
     return $fileTransfer;
 }
Esempio n. 7
0
 /**
  * @group SharedInstance
  */
 public function testMarkingClassAsNotSharedInjectsNewInstanceIntoAllRequestersButDependentsAreShared()
 {
     $di = new Di();
     $di->configure(new Config(array('instance' => array('ZendTest\\Di\\TestAsset\\SharedInstance\\Lister' => array('shared' => false)))));
     $movie = $di->get('ZendTest\\Di\\TestAsset\\SharedInstance\\Movie');
     $venue = $di->get('ZendTest\\Di\\TestAsset\\SharedInstance\\Venue');
     $this->assertNotSame($movie->lister, $venue->lister);
     $this->assertSame($movie->lister->sharedLister, $venue->lister->sharedLister);
 }
Esempio n. 8
0
 public function __construct(array $config = array())
 {
     $defaultConfig = array('transports' => array('smtp' => false, 'sendmail' => false, 'file' => true), 'message' => array(), 'di' => array('definition' => array('class' => array('Zend\\View\\Resolver\\AggregateResolver' => array('attach' => array('resolver' => array('required' => true, 'type' => 'Zend\\View\\Resolver\\TemplatePathStack'))))), 'instance' => array('Zend\\View\\Resolver\\TemplatePathStack' => array('parameters' => array('paths' => array(Message::VIEW_PATH_NAME => EVA_ROOT_PATH . '/data/'))), 'Zend\\View\\Resolver\\AggregateResolver' => array('injections' => array('Zend\\View\\Resolver\\TemplatePathStack')), 'Zend\\View\\Renderer\\PhpRenderer' => array('parameters' => array('resolver' => 'Zend\\View\\Resolver\\AggregateResolver')), 'Eva\\Mail\\Message' => array('parameters' => array('headers' => 'Zend\\Mail\\Headers', 'view' => 'Zend\\View\\Renderer\\PhpRenderer', 'viewModel' => 'Zend\\View\\Model\\ViewModel', 'encoding' => 'UTF-8')), 'Zend\\Mail\\Transport\\FileOptions' => array('parameters' => array('path' => EVA_ROOT_PATH . '/data/mail')), 'Zend\\Mail\\Transport\\File' => array('injections' => array('Zend\\Mail\\Transport\\FileOptions')), 'Zend\\Mail\\Transport\\Smtp' => array('injections' => array('Zend\\Mail\\Transport\\SmtpOptions')))));
     $globalConfig = Api::_()->getConfig();
     if (isset($globalConfig['mail'])) {
         $config = Config::mergeArray($defaultConfig, $globalConfig['mail'], $config);
     } else {
         $config = Config::mergeArray($defaultConfig['mail'], $config);
     }
     $diConfig = array();
     if ($config['di']) {
         $diConfig = $config['di'];
     }
     $di = new Di();
     $di->configure(new DiConfig($diConfig));
     $this->message = $di->get('Eva\\Mail\\Message');
     $allowTransports = $this->transportsClasses;
     $transportType = '';
     if (is_string($config['transports'])) {
         $transportType = $config['transports'];
         $transportClass = isset($allowTransports[$transportType]) ? $allowTransports[$transportType] : null;
         if (!$transportClass) {
             throw new Exception\InvalidArgumentException(sprintf('Unknow transport type %s in method %s"', $transportType, __METHOD__));
         }
         $transport = $di->get($transportClass);
         //\Zend\Di\Display\Console::export($di);
         $this->transports[$transportType] = $transport;
     } elseif (is_array($config['transports'])) {
         $transportTypes = $config['transports'];
         foreach ($transportTypes as $transportType => $value) {
             if (!$value) {
                 continue;
             }
             $transportClass = isset($allowTransports[$transportType]) ? $allowTransports[$transportType] : null;
             if (!$transportClass) {
                 throw new Exception\InvalidArgumentException(sprintf('Unknow transport type %s in method %s"', $transportType, __METHOD__));
             }
             $this->transports[$transportType] = $di->get($transportClass);
         }
     } else {
         throw new Exception\InvalidArgumentException(sprintf('%s expects a string or array as transport config, "%s" received', __METHOD__, gettype($config['transports'])));
     }
 }
Esempio n. 9
0
 public function getAuthStorage()
 {
     if ($this->authService) {
         return $this->authService->getStorage();
     }
     if ($this->authStorage) {
         return $this->authStorage;
     }
     $this->initStorage();
     $diConfig = $this->getDiConfig();
     $di = new Di();
     $di->configure(new DiConfig($diConfig));
     return $this->authStorage = $di->get($this->storageClass);
 }
Esempio n. 10
0
<?php

require_once './autoloader.php';
use Zend\Mail\Message;
use Zend\Mail\Transport;
use Zend\Di\Di;
use Zend\Di\Config as DiConfig;
$diConfig = array('instance' => array('Zend\\Mail\\Transport\\FileOptions' => array('parameters' => array('path' => __DIR__)), 'Zend\\Mail\\Transport\\File' => array('injections' => array('Zend\\Mail\\Transport\\FileOptions')), 'Zend\\Mail\\Transport\\SmtpOptions' => array('parameters' => array('name' => 'sendgrid', 'host' => 'smtp.sendgrid.net', 'port' => 25, 'connectionClass' => 'login', 'connectionConfig' => array('username' => '*****@*****.**', 'password' => 'password'))), 'Zend\\Mail\\Message' => array('parameters' => array('headers' => 'Zend\\Mail\\Headers', 'Zend\\Mail\\Message::setTo:emailOrAddressList' => '*****@*****.**', 'Zend\\Mail\\Message::setTo:name' => 'EvaEngine', 'Zend\\Mail\\Message::setFrom:emailOrAddressList' => '*****@*****.**', 'Zend\\Mail\\Message::setFrom:name' => 'EvaEngine', 'setBody' => 'Zend\\View\\Renderer\\PhpRenderer::render')), 'Zend\\Mail\\Transport\\Smtp' => array('injections' => array('Zend\\Mail\\Transport\\SmtpOptions'))));
$di = new Di();
$di->configure(new DiConfig($diConfig));
$transport = $di->get('Zend\\Mail\\Transport\\Smtp');
$transport = $di->get('Zend\\Mail\\Transport\\Sendmail');
$transport = $di->get('Zend\\Mail\\Transport\\File');
$message = $di->get('Zend\\Mail\\Message');
$view = new Zend\View\Renderer\PhpRenderer();
$resolver = new Zend\View\Resolver\TemplatePathStack();
$resolver->setPaths(array('mailTemplate' => __DIR__));
$view->setResolver($resolver);
$viewModel = new Zend\View\Model\ViewModel();
$viewModel->setTemplate('mail/template')->setVariables(array('user' => 'AlloVince'));
$message->setSubject("Zend Mail with Template")->setBody($view->render($viewModel));
$transport->send($message);
Esempio n. 11
0
 /**
  * Retrieves a fresh dumper at every call
  *
  * @return Dumper
  */
 protected function getDumper()
 {
     $di = new Di();
     $di->configure(new Config($this->diConfigArray));
     return new Dumper($di);
 }
Esempio n. 12
0
 public function setUp()
 {
     $configuration = (require 'app/config-test.php');
     $this->di = new Di();
     $this->di->configure(new Configuration($configuration['di']));
 }
Esempio n. 13
0
<?php

/**
 * Application bootstrap file.
 * Used to initialize DI container and return
 * it's instance as a result of inclusion
 *
 * @author nfx
 */
require_once __DIR__ . '/../vendor/autoload.php';
use Zend\Di\Di;
use Zend\Di\Configuration;
/**
 * PHP doesn't need special config file format in most cases
 */
$configuration = (include 'config.php');
$di = new Di();
$di->configure(new Configuration($configuration['di']));
return $di;