1. Go to this page and download the library: Download gravatalonga/container 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/ */
gravatalonga / container example snippets
use Gravatalonga\Container\Container;
$container = new Container();
$container->set('random', function() {
return rand(0, 1000);
});
$container->share('uniqueSeed', function() {
return rand(0, 1000);
});
// create alias 'sessionId'
$container->alias('uniqueSeed', 'sessionId');
echo $container->get('random'); // get random number each time you call this.
if ($container->has('uniqueSeed')) {
echo $container->get('uniqueSeed'); // get same random number.
}
use Gravatalonga\Container\Container;
new Container([
'settings' => ['my-settings'],
FooBar::class => function (\Psr\Container\ContainerInterface $c) {
return new FooBar();
}
]);
use Gravatalonga\Container\Container;
$container = new Container();
$container->set(RedisClass::class, function () {
return new RedisClass();
});
// then you can use...
$cache = $container->get('Cache');
use Gravatalonga\Container\Container;
use Psr\Container\ContainerInterface;
$container = new Container([
'server' => 'localhost',
'username' => 'root'
]);
$container->set('Cache', function (ContainerInterface $container) {
// some where you have binding this RedisClass into container...
return $container->make(RedisClass::class, [
'server' => $container->get('server'),
'username' => $container->get('username')
]);
});
// set is a method alias of factory
$container->factory('CacheManager', function() {
return new CacheManager();
});
// then you can use...
$cache = $container->get('Cache');
use Gravatalonga\Container\Container;
$container = new Container();
$container[FooBar::class] = function(ContainerInterface $container) {
return new FooBar($container->get('settings'));
};
if (isset($container[FooBar::class])) {
echo $container[FooBar::class]->helloWorld();
}
use Gravatalonga\Container\Container;
$container = new Container();
$container->set('settings', ['driver' => 'default']);
$container->set(FooBar::class, function($settings) {
return new FooBar($settings);
});
$container->alias(FooBar::class, 'foo.bar');
$foobar = $container->get('foo.bar');
use Gravatalonga\Container\Container;
$class = new class
{
public function get(): int
{
return mt_rand(0, 100);
}
};
$container = new Container();
$container->factory('random', [$class, 'get']);
$foobar = $container->get('random'); // it will get random int
use Gravatalonga\Container\Container;
class Test
{
/**
* @var string
*/
public $name;
public function __construct($name = 'Jonathan Fontes')
{
$this->name = $name;
}
}
$container = new Container();
$container->get(Test::class, function(ContainerInterface $container) {
return new Test;
});
$container->extend(Test::class, function(ContainerInterface $container, $test) {
return new Test($test->name.' - The greatest!');
});
echo $container->get(Test::class); // It will print 'Jonathan Fontes - The greatest!';
use Gravatalonga\Container\Container;
class FooBar {}
class Test
{
public function __construct(FooBar $foobar)
{
$this->foobar = $foobar;
}
}
$container = new Container();
$container->set(FooBar::class, function () {
return new FooBar();
});
$container->get(Test::class); // FooBar it will inject into Test class.
use Gravatalonga\Container\Container;
class Test
{
public function __construct(string $name)
{
$this->name = $name;
}
}
$container = new Container();
$container->set('name', 'my-var');
$container->get(Test::class); // my-var it will inject into Test class.
use Gravatalonga\Container\Container;
class Test
{
/**
* @var string
*/
private $name;
public function __construct(string $name = null)
{
$this->name = $name;
}
}
$container = new Container();
$container->get(Test::class); // null it will inject into Test class.
use Gravatalonga\Container\Container;
class Test
{
/**
* @var string
*/
private $name;
public function __construct($name = 'Jonathan Fontes')
{
$this->name = $name;
}
}
$container = new Container();
$container->get(Test::class); // 'Jonathan Fontes' it will pass into container...
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.