PHP code example of hatem-azzouzi / z-di

1. Go to this page and download the library: Download hatem-azzouzi/z-di library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

hatem-azzouzi / z-di example snippets



// /conf/config.injection.php

/* @var $this \ZDI\Inject */

return array(
    \ZDI\tests\injection\Email::class => $this->create(\ZDI\tests\injection\Email::class, 'email'),

    \ZDI\tests\injection\Text::class => $this->create(\ZDI\tests\injection\Text::class, 'text'),

    \ZDI\tests\injection\Client::class => $this->create(\ZDI\tests\injection\Client::class, 'client')
        ->inject(\ZDI\tests\injection\Email::class),
);



echo "\n";
echo "bootstrapping..\n";

/* @var $inject \ZDI\Inject */
$inject = ent */
$client = \ZDI\Inject::getDefinition(\ZDI\tests\injection\Client::class);

echo "\n";
echo "send function call\n";
$client->send("a test message");
echo "\n";


// /conf/config.lazy.php

/* @var $this \ZDI\Inject */

return array(
    ZDI\tests\ignition\ClassA::class => $this->create(ZDI\tests\ignition\ClassA::class, 'hello'),
);



echo "\n";
echo "bootstrapping..\n";

/* @var $inject \ZDI\Inject */
$inject = A */
$classA = \ZDI\Inject::getDefinition(ZDI\tests\ignition\ClassA::class);

echo "\n";
echo "foo function call\n";
$classA->foo("bar");
echo "\n";


// /conf/config.lazy.php

/* @var $this \ZDI\Inject */

return array(
    ZDI\tests\lazy\ClassA::class => $this->instance(ZDI\tests\lazy\ClassA::class, 'hello'),
);



/* @var $this \ZDI\Inject */

return array(
    \ZDI\tests\injection\Email::class => $this->instance(\ZDI\tests\injection\Email::class, 'email'),

    \ZDI\tests\injection\Text::class => $this->instance(\ZDI\tests\injection\Text::class, 'text'),

    \ZDI\tests\injection\Client::class => $this->instance(
            \ZDI\tests\injection\Client::class, $this->instance(\ZDI\tests\injection\Email::class, 'text'), 
            'client'
        ),
);

[
    ZDI\tests\ignition\ClassA::class => $this->create(ZDI\tests\ignition\ClassA::class, 'foo', 'bar'),
]

[
    ZDI\tests\ignition\ClassA::class => $this->create(ZDI\tests\ignition\ClassB::class, 'foo', 'bar'),
]

[
    ZDI\tests\ignition\ClassA::class => $this->create(ZDI\tests\ignition\ClassC::class, 'foo 1', 'bar 2'),
]
 shell
$ cd tests/injection
$ php index.php config=injection
bootstrapping..

get Client definition

send function call
ZDI\tests\injection\Email instantiated: email
ZDI\tests\injection\Client instantiated: client
ZDI\tests\injection\Email email sent: a test message
 shell
$ cd tests/ignition
$ php index.php config=lazy
bootstrapping..

get ClassA definition

foo function call
ZDI\tests\ignition\ClassA instantiated: hello
ZDI\tests\ignition\ClassA function called: bar
 shell
$ cd tests/ignition
$ php index.php config=eager
bootstrapping..
ZDI\tests\ignition\ClassA instantiated: hello

get ClassA definition

foo function call
ZDI\tests\ignition\ClassA function called: bar
 php


namespace ZDI\conf;

nfig = $arg['config'] ?? '';

return (new \ZDI\Inject(\ZDI\Magic::class))
        ->setDefinitions(
            [
                __DIR__ . '/config.php',
                __DIR__ . "/config.$config.php",
                __DIR__ . '/config.' . strtolower(gethostname()) . '.php'
            ]
        );

shell
$ cd tests/ignition
$ php index.php
bootstrapping..

get ClassA definition

foo function call
ZDI\tests\ignition\ClassA instantiated: foo
ZDI\tests\ignition\ClassA function called: bar
shell
$ cd tests/ignition
$ php index.php config=dev
bootstrapping..

get ClassA definition

foo function call
ZDI\tests\ignition\ClassB instantiated: foo
ZDI\tests\ignition\ClassB function called: bar
shell
$ cd tests/ignition
$ php index.php config=prod
bootstrapping..

get ClassA definition

foo function call
ZDI\tests\ignition\ClassC instantiated: foo 1
ZDI\tests\ignition\ClassC function called: bar