1. Go to this page and download the library: Download jasny/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/ */
jasny / container example snippets
use Jasny\Container\Container;
use Psr\Container\ContainerInterface;
$container = new Container([
Foo::class => static function() {
return new Foo();
},
BarInterface::class => static function(ContainerInterface $container) {
$foo = $container->get(Foo::class);
return new Bar($foo);
},
"bar" => static function(ContainerInterface $container) {
return $container->get('bar'); // Alias for BarInterface
},
"APPLICATION_ENV" => static function(ContainerInterface $container) {
return getenv('APPLICATION_ENV');
}
]);
$otherContainer = new Container([
ZooInterface::class => static function(ContainerInterface $container) {
$foo = $container->get(Foo::class); // $container is the $rootContainer
return new Zoo($foo);
}
}, $rootContainer);
use Jasny\Container\Container;
use Jasny\Container\Loader\EntryLoader;
$files = new \GlobIterator(
'path/to/declarations/*.php',
\GlobIterator::CURRENT_AS_PATHNAME | \GlobIterator::SKIP_DOTS
);
$loader = new EntryLoader($files);
$container = new Container($loader);
use Jasny\Container\Container;
use Jasny\Container\ClassLoader;
$loader = new ClassLoader(new \ArrayIterator(['App\Foo', 'App\Bar', 'App\Qux']));
$container = new Container($loader);
use Jasny\Container\Container;
use Jasny\Container\ClassLoader;
use Psr\Container\ContainerInterface;
$callback = static function(string $class): array {
$baseClass = preg_replace('/^.+\\/', '', $class); // Remove namespace
$id = strtolower($baseClass);
return [
$id => static function(ContainerInterface $container) use ($class) {
$colors = $container->get('colors');
return new $class($colors);
}
];
};
$loader = new ClassLoader(new \ArrayIterator(['App\Foo', 'App\Bar', 'App\Qux']), $callback);
$container = new Container($loader);
use Jasny\Container\Container;
use Jasny\Container\Loader\ClassLoader;
use Jasny\FQCN\FQCNIterator;
$directoryIterator = new \RecursiveDirectoryIterator('path/to/project/services');
$recursiveIterator = new \RecursiveIteratorIterator($directoryIterator);
$sourceIterator = new \RegexIterator($recursiveIterator, '/^.+\.php$/i', \RegexIterator::GET_MATCH);
$fqcnIterator = new FQCNIterator($sourceIterator);
$loader = new ClassLoader($fqcnIterator);
$container = new Container($loader);
// No type checking is done
$container->get('foo');
$container->get('datetime');
$container->get('My.thing');
// No checking is done because class doesn't exist
$container->get('FooBar');
// Checking is done
$container->get('Psr\Http\Message\ServerRequestInterface');
use Jasny\Container;
use Psr\Container\ContainerInterface;
$container = new Container([
'config' => static function(ContainerInterface $container) {
return new Container([
'secret' => static function() {
return getenv('APPLICATION_SECRET');
}
]);
}
]);
$secret = $container->get('config.secret');
use Jasny\Container\Container;
use Jasny\Container\AutowireContainerInterface;
use Jasny\Autowire\AutowireInterface;
use Jasny\Autowire\ReflectionAutowire;
use Psr\Container\ContainerInterface;
$container = new Container([
AutowireInterface::class => static function(ContainerInterface $container) {
return new ReflectionAutowire($container);
},
Foo::class => static function(ContainerInterface $container) {
return new Foo();
},
BarInterface::class => static function(AutowireContainerInterface $container) {
return $container->autowire(Bar::class);
}
]);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.