ph-7/dependency-injection-container

Simple PHP 7.1+ Dependency Injection Container (DIC) Library.

1.0.4 2019-07-20 15:39 UTC

This package is auto-updated.

Last update: 2024-04-29 04:03:03 UTC


README

Summary ⏳

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 🎉

PHP Dependency Injection Container

Requirements ⚙

Installation 📓

composer require ph-7/dependency-injection-container

Usage 🎮

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';
}

Another Example... 🎯

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');

Inspired By... 🧠

This project is highly inspired by my DIC I built for another side-project.

...Who Am I...? 🤔

Pierre-Henry Soria

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!

Passion Drives 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 ☀️

License ⚖

Under GNU GPL v3 or later.