It is possible to dump the information contained within both the Definition and InstanceManager for a Di instance.
The easiest way is to do the following:
1 | Zend\Di\Display\Console::export($di);
|
If you are using a RuntimeDefinition where upon you expect a particular definition to be resolve at the first-call, you can see that information to the console display to force it to read that class:
1 | Zend\Di\Display\Console::export($di, array('A\ClassIWantTo\GetTheDefinitionFor'));
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | namespace Foo\Bar {
class Baz implements BamAwareInterface
{
public $bam;
public function setBam(Bam $bam)
{
$this->bam = $bam;
}
}
class Bam
{
}
interface BamAwareInterface
{
public function setBam(Bam $bam);
}
}
namespace {
include 'zf2bootstrap.php';
$di = new Zend\Di\Di;
$baz = $di->get('Foo\Bar\Baz');
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | namespace Foo\Bar {
class Baz
{
public $bam;
public function setBam(Bam $bam)
{
$this->bam = $bam;
}
}
class Bam {
}
}
namespace {
$di = new Zend\Di\Di;
$di->configure(new Zend\Di\Config(array(
'definition' => array(
'class' => array(
'Foo\Bar\Baz' => array(
'setBam' => array('required' => true)
)
)
)
)));
$baz = $di->get('Foo\Bar\Baz');
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | namespace Application {
class Page
{
public $blocks;
public function addBlock(Block $block)
{
$this->blocks[] = $block;
}
}
interface Block
{
}
}
namespace MyModule {
class BlockOne implements \Application\Block {}
class BlockTwo implements \Application\Block {}
}
namespace {
include 'zf2bootstrap.php';
$di = new Zend\Di\Di;
$di->configure(new Zend\Di\Config(array(
'definition' => array(
'class' => array(
'Application\Page' => array(
'addBlock' => array(
'block' => array('type' => 'Application\Block', 'required' => true)
)
)
)
),
'instance' => array(
'Application\Page' => array(
'injections' => array(
'MyModule\BlockOne',
'MyModule\BlockTwo'
)
)
)
)));
$page = $di->get('Application\Page');
}
|
The source code of this file is hosted on GitHub. Everyone can update and fix errors in this document with few clicks - no downloads needed.