2017 © Pedro Peláez
 

library seaudi

A semi-automatic DI resolver retrieving dependencies through a container.

image

pavlakis/seaudi

A semi-automatic DI resolver retrieving dependencies through a container.

  • Saturday, January 2, 2016
  • by pavlakis
  • Repository
  • 1 Watchers
  • 0 Stars
  • 299 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 4 Versions
  • 0 % Grown

The README.md

Build Status, (*1)

Semi-Automatic Dependency Injection

Resolving class dependencies which have already been set in the DI Container., (*2)

It is using a container compatible with the Interop Container interface and by using Reflection, it tries to match type hints to keys in the container., (*3)

When passing a class name, it expects its dependencies to exist as fully qualified class named keys in that container., (*4)

e.g. Slim 3 example, (*5)

For a basic action class

namespace PHPMinds\Action;

use Slim\Views\Twig;
use Psr\Log\LoggerInterface;
use Slim\Http\Request;
use Slim\Http\Response;


class NotFoundAction
{
    private $view;
    private $logger;


    public function __construct(Twig $view, LoggerInterface $logger)
    {
        $this->view = $view;
        $this->logger = $logger;

    }

    public function dispatch(Request $request, Response $response, $args)
    {

        $this->view->render($response, '404.twig');
        return $response;
    }
}

When we have passed its dependencies

// Slim 3 example
$container = $app->getContainer();

// Twig
$container['Slim\Views\Twig'] = function ($c) {
    $settings = $c->get('settings');
    $view = new \Slim\Views\Twig($settings['view']['template_path'], $settings['view']['twig']);

    // Add extensions
    $view->addExtension(new Slim\Views\TwigExtension($c->get('router'), $c->get('request')->getUri()));
    $view->addExtension(new Twig_Extension_Debug());

    return $view;
};

// monolog
$container['Psr\Log\LoggerInterface'] = function ($c) {
    $settings = $c->get('settings');
    $logger = new \Monolog\Logger($settings['logger']['name']);
    $logger->pushProcessor(new \Monolog\Processor\UidProcessor());
    $logger->pushHandler(new \Monolog\Handler\StreamHandler($settings['logger']['path'], \Monolog\Logger::DEBUG));
    return $logger;
};

We can now resolve its dependencies directly

$injector = new \pavlakis\seaudi\Injector($container);

$injector->add('PHPMinds\Action\NotFoundAction');

The Versions

02/01 2016

dev-master

9999999-dev http://github.com/pavlakis/seaudi

A semi-automatic DI resolver retrieving dependencies through a container.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

container reflection slim ioc di

02/01 2016

0.2

0.2.0.0 http://github.com/pavlakis/seaudi

A semi-automatic DI resolver retrieving dependencies through a container.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

container reflection slim ioc di

27/12 2015

0.1

0.1.0.0 http://github.com/pavlakis/seaudi

A semi-automatic DI resolver retrieving dependencies through a container.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

container reflection slim ioc di

27/12 2015

dev-develop

dev-develop http://github.com/pavlakis/seaudi

A semi-automatic DI resolver retrieving dependencies through a container.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

container reflection slim ioc di