1. Go to this page and download the library: Download quanta/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/ */
quanta / container example snippets
// class definitions
final class SomeClass
{
public function __construct(public SomeDependency $dependency)
{
}
}
final class SomeDependency
{
}
// container configuration
$container = new Quanta\Container([
'id' => 'value',
SomeClass::class => fn ($container) => new SomeClass(
$container->get(SomeDependency::class),
),
SomeDependency::class => fn () => new SomeDependency,
'throwing' => function () {
throw new Exception('some exception');
},
]);
// true
$container instanceof Psr\Container\ContainerInterface;
$container->has('id');
$container->has(SomeClass::class);
$container->has(SomeDependency::class);
$container->has('throwing');
$container->get('id') === 'value';
$container->get(SomeClass::class) == new SomeClass(new SomeDependency);
$container->get(SomeDependency::class) == new SomeDependency;
$container->get(SomeClass::class) === $container->get(SomeClass::class);
$container->get(SomeDependency::class) === $container->get(SomeDependency::class);
$container->get(SomeClass::class)->dependency === $container->get(SomeDependency::class);
// false
$container->has('not.defined');
// throws Quanta\Container\NotFoundException
try {
$container->get('not.defined');
} catch (Quanta\Container\NotFoundException $e) {
// 'No 'not.defined' entry defined in the container'
echo $e->getMessage() . "\n";
}
// throws Quanta\Container\ContainerException with the caught exception as previous
try {
$container->get('throwing');
} catch (Quanta\Container\ContainerException $e) {
// 'Cannot get 'throwing' from the container: factory has thrown an uncaught exception'
echo $e->getMessage() . "\n";
// 'some exception'
echo $e->getPrevious()->getMessage() . "\n";
}
// class definitions
interface SomeInterface
{
}
final class SomeImplementation implements SomeInterface
{
}
// container configuration
$container = new Quanta\Container([
SomeInterface::class => SomeImplementation::class,
SomeImplementation::class => fn () => new SomeImplementation,
]);
// true
$container->has(SomeInterface::class);
$container->has(SomeImplementation::class);
$container->get(SomeInterface::class) == new SomeImplementation;
$container->get(SomeImplementation::class) == new SomeImplementation;
$container->get(SomeInterface::class) === $container->get(SomeInterface::class);
$container->get(SomeInterface::class) === $container->get(SomeImplementation::class);
$container->get(SomeImplementation::class) === $container->get(SomeImplementation::class);
// class definitions
interface SomeInterface
{
}
final class SomeImplementation implements SomeInterface
{
}
final class AnotherUndefinedClass
{
}
final class UndefinedClass
{
public function __construct(
public SomeInterface $dependency1,
public AnotherUndefinedClass $dependency2,
public ?int $dependency3,
public string $dependency4 = 'test',
) {
}
}
// container configuration
$container = new Quanta\Container([
SomeInterface::class => SomeImplementation::class,
]);
// true
$container->has(SomeInterface::class);
$container->has(SomeImplementation::class);
$container->has(UndefinedClass::class);
$container->has(AnotherUndefinedClass::class);
$container->get(SomeInterface::class) == new SomeImplementation;
$container->get(SomeImplementation::class) == new SomeImplementation;
$container->get(UndefinedClass::class) == new UndefinedClass(new SomeImplementation, new AnotherUndefinedClass, null);
$container->get(AnotherUndefinedClass::class) == new AnotherUndefinedClass;
$container->get(SomeInterface::class) === $container->get(SomeInterface::class);
$container->get(SomeInterface::class) === $container->get(SomeImplementation::class);
$container->get(SomeImplementation::class) === $container->get(SomeImplementation::class);
$container->get(UndefinedClass::class) === $container->get(UndefinedClass::class);
$container->get(AnotherUndefinedClass::class) === $container->get(AnotherUndefinedClass::class);
$container->get(UndefinedClass::class)->dependency1 === $container->get(SomeInterface::class);
$container->get(UndefinedClass::class)->dependency2 === $container->get(AnotherUndefinedClass::class);
$container->get(UndefinedClass::class)->dependency3 === null;
$container->get(UndefinedClass::class)->dependency4 === 'test';
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.