iquxbyte / container-di
Simple IoC container with some method: bind, singleton, resolve, make.
0.0.1
2020-04-27 09:42 UTC
Requires
- php: ^7.1
This package is not auto-updated.
Last update: 2025-06-18 08:34:09 UTC
README
Simple IoC container with some method: bind, singleton, resolve, make.
Install
Install Composer
composer require iquxbyte/container-di
Install Non-Composer
Just download this repo and include path/to/src/__autoload.php
.
Use
Bind
ContainerDI::bind(Foo::class);
Singleton
ContainerDI::singleton(FooBarContract::class, FooBar::class);
Make class
ContainerDI::make(FooBarContract::class, FooBar::class);
Resolve class
ContainerDI::make(Foo::class);
Example
<?php use IquxByte\ContainerDI; require_once '../src/__autoload.php'; require_once 'class.php'; /** * Simple bind class to container */ ContainerDI::bind(Foo::class); /** * bind with custom name */ ContainerDI::bind('class.foo', Foo::class); /** * use closure to bind */ ContainerDI::bind(Foo::class, function ($containerDI) { return new Foo; }); /** * bind class with interface to container */ ContainerDI::bind(FooBarContract::class, FooBar::class); /** * Get instance */ $instance = ContainerDI::make(FooBar::class); /** * Get class from interface */ $instance = ContainerDI::make(FooBarContract::class); /** * Singleton class to container */ ContainerDI::singleton(Bar::class); /** * Test singleton * should be true */ var_dump(ContainerDI::make(Bar::class) === ContainerDI::make(Bar::class)); /** * Test bind * should be false */ var_dump(ContainerDI::make(FooBarContract::class) === ContainerDI::make(FooBarContract::class));