1. Go to this page and download the library: Download devanych/di-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/ */
devanych / di-container example snippets
use Devanych\Di\Container;
$container = new Container();
// or with definitions array
$container = new Container($definitions);
/**
* Sets definition to the container.
*
* @param string $id
* @param mixed $definition
*/
$container->set($id, $definition);
/**
* Sets multiple definitions at once; used in the constructor.
*
* @param array<string, mixed> $definitions
*/
$container->setMultiple($definitions);
/**
* Returns 'true` if the dependency with this ID was sets, otherwise `false`.
*
* @param string $id
* @return bool
*/
$container->has($id);
/**
* Gets instance by definition from the container by ID.
*
* @param string $id
* @return mixed
* @throws Devanych\Di\Exception\NotFoundException If not found definition in the container.
* @throws Devanych\Di\Exception\ContainerException If unable to create instance.
*/
$container->get($id);
/**
* Always gets a new instance by definition from the container by ID.
*
* @param string $id
* @return mixed
* @throws Devanych\Di\Exception\NotFoundException If not found definition in the container.
* @throws Devanych\Di\Exception\ContainerException If unable to create instance.
*/
$container->getNew($id);
/**
* Gets original definition from the container by ID.
*
* @param string $id
* @return mixed
* @throws Devanych\Di\Exception\NotFoundException If not found definition in the container.
*/
$container->getDefinition($id);
// Set string
$container->set('string', 'value');
$container->get('string'); // 'value'
// Set integer
$container->set('integer', 5);
$container->get('integer'); // 5
// Set array
$container->set('array', [1,2,3]);
$container->get('array'); // [1,2,3]
// Set nested array
$container->set('nested', [
'scalar' => [
'integer' => 5,
'float' => 3.7,
'boolean' => false,
'string' => 'string',
],
'not_scalar' => [
'closure' => fn() => null,
'object' => new User(),
'array' => ['array'],
],
]);
// Set object
$container->set('user', fn() => new User());
$container->get('user'); // User instance
// Or
$container->set('user', User::class);
$container->get('user');
// Or
$container->set(User::class, User::class);
$container->get(User::class);
// Or without setting via `set()`
$container->get(User::class);
/*
final class UserProfile
{
private $name;
private $age;
public function __construct(string $name = 'John', int $age = 25)
{
$this->name = $name;
$this->age = $age;
}
}
final class User
{
private $profile;
public function __construct(UserProfile $profile)
{
$this->profile = $profile;
}
}
*/
$container->set('user_name', 'Alexander');
$container->set('user_age', 40);
$container->set('user', function (\Psr\Container\ContainerInterface $container): User {
$name = $container->get('user_name');
$age = $container->get('user_age');
$profile = new UserProfile($name, $age);
return new User($profile);
});
$container->get('user');
// Or
$container->set(UserProfile::class, function (\Psr\Container\ContainerInterface $container): UserProfile {
return new UserProfile($container->get('user_name'), $container->get('user_age'));
});
$container->get(User::class);
// Or with default values (`John` and `25`)
$container->get(User::class);
/*
final class UserProfileFactory implements \Devanych\Di\FactoryInterface
{
public function create(\Psr\Container\ContainerInterface $container): UserProfile
{
return new UserProfile($container->get('user_name'), $container->get('user_age'));
}
}
*/
$container->setMultiple([
UserProfile::class => UserProfileFactory::class,
// Or without autowiring
// UserProfile::class => fn => UserProfileFactory(),
// UserProfile::class => new UserProfileFactory(),
'user_name' => 'Alexander',
'user_age' => 40,
]);
$container->get(User::class); // User instance
$container->get(UserProfile::class); // UserProfile instance
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.