PHP Classes

File: README.md

Recommend this page to a friend!
  Classes of Pierre-Henry Soria   Simple PHP Dependency Injection Container Class   README.md   Download  
File: README.md
Role: Documentation
Content type: text/markdown
Description: Documentation
Class: Simple PHP Dependency Injection Container Class
Container to register and call service providers
Author: By
Last change: Remove extra newline
README: Add Installation section
Add profile picture + personal website URL
[README] Add more emojis! 💪
Make it Fun! :smiley: Enjoyable!
[README] Add project intro image
[README] Add a "Passionate" section :)
[README]Add Installation section and move it to top
Date: 4 years ago
Size: 3,229 bytes
 

Contents

Class file image Download

P.H.'s Dependency Injection Container Library

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 :belgium: :smiley:

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.