-
-
Save Ocramius/1360533 to your computer and use it in GitHub Desktop.
<?php | |
return array( | |
'di' => array( | |
'definition' => array( | |
//teaching DI to use the factory | |
'class' => array( | |
'Zend\Db\Db' => array( | |
'methods' => array( | |
'factory' => array( | |
'adapter' => array( | |
'type' => false, | |
'required' => true, | |
), | |
'config' => array( | |
'type' => false, | |
'required' => false, | |
), | |
), | |
), | |
), | |
'Zend\Db\Adapter\AbstractAdapter' => array( | |
'instantiator' => array( | |
'Zend\Db\Db', | |
'factory', | |
), | |
), | |
), | |
), | |
'instance' => array( | |
'alias' => array( | |
//we just know it's an abstract adapter | |
'my-db-adapter' => 'Zend\Db\Adapter\AbstractAdapter', | |
), | |
//documentmanager | |
'my-db-adapter' => array( | |
'parameters' => array( | |
'adapter' => array( | |
// same db factory parameters you used in 1.x (I suppose) | |
), | |
), | |
), | |
), | |
), | |
); |
Did you clone the application skeleton? There's a nice tutorial at http://packages.zendframework.com/docs/latest/manual/en/zend.mvc.html
'MyModule\Model\Account' => array(
'parameters' => array(
'adapter' => 'my-db-adapter',
),
),
Does this need to be defined for every model that is used? IE
'Album\Controller\AlbumController' => array(
'parameters' => array(
'albumTable' => 'Album\Model\AlbumTable',
'bandTable' => 'Album\Model\BandTable',
),
),
'Album\Controller\BandController' => array(
'parameters' => array(
'bandTable' => 'Album\Model\BandTable',
),
),
In other words does every controller need to have the Model specified?
If you have multiple defined, yes. Otherwise, if you typehint your methods correctly, like following:
public function __construct(My\Stuff $stuff) {
$this->stuff = $stuff;
}
Then, if you defined an alias 'my-stuff'
for an instance of type My\Stuff
, you could just use Zend\Di\Configuration
option 'preference'
, like following, you should not be worried about defining injections manually every time:
return array(
'instance' => array(
'alias' => array(
'my-stuff' => 'My\Stuff',
),
'preference' => array(
'My\Stuff' => 'my-stuff', //this will tell Zend\Di to use alias 'my-stuff' when no alias is requested, but an instance of My\Stuff is needed
),
),
);
That is just an example config. You can find more examples about Zend\Di
at https://github.com/ralphschindler/Zend_DI-Examples
Awesome thanks for the help!
Where is $di coming from ?
I've tried:
use Zend\Di\Di as Di;
..... {
$di = new Di();
$db = $di->get('my-db-adapter');
That didn't work
also is there a way to turn on php errors like in zf1:
[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
It's kinda hard to code with no error reporting :)