The "P.H.'s DIC" is a simple and lightweight PHP 7.1+ Dependency Injection Container's library which lets you manage your dependencies easily for your next great project 🎉
composer require ph-7/dependency-injection-container
Register your new DIC as below (FYI, for this example I use the Symfony's HttpFoundation Request).
For the first example, let's create your provider class with an anonymous class that implements the \PierreHenry\Container\Providable
interface.
use PierreHenry\Container\Container;
use PierreHenry\Container\Providable;
use Symfony\Component\HttpFoundation\Request;
$container = new Container();
// Register your container
$container->register(
'example.symfony.httprequest',
new class implements Providable
{
public function getService(): Request
{
return Request::createFromGlobals();
}
}
);
// Retrieve the container
$httpRequest = $container->get('example.symfony.httprequest');
// Use it
$request = $httpRequest->request; // $_POST body params
if ($request->get('get_var')) {
echo '$_POST["get var"] exists';
} else {
echo '"get_var" has not been requested';
}
use DateTime;
use DateTimeZone;
use PierreHenry\Container\Container;
use PierreHenry\Container\Providable;
$container = new Container();
$container->register(
'stubs.date.datetime',
new class implements Providable
{
public function getService(): DateTime
{
return new DateTime('now', new DateTimeZone('America/Chicago'));
}
}
);
// Retrieve the container
$date = $container->get('stubs.date.datetime');
// Use it
echo $date->format('m-d-Y H:i:s');
This project is highly inspired by my DIC I built for another side-project.
Hi there! 😉 I'm Pierre-Henry Soria, "PierreHenry.be™": a cool passionate Belgian software engineer 🇧🇪 😃
You can keep in touch with me at hi {{AT}} ph7 [[D0T]] me!
Love programming! 😊 Check out other exciting projects I previously did such as Lifyzer Healthy Food, which gives lots of details about what you eat and allow you do scan your food items 🌯 Another project I'm proud of is the Social Dating WebApp Builder Project I started 8 years ago ☀️
Under GNU GPL v3 or later.