ioc container &

Dependency Injection

LARAVEL 4

IoC container

¿Qué es?

Librería que reconoce qué dependencias tienen declaradas nuestras clases

¿Qué hace?

Permite instanciar sin preocuparse por pasar las dependencias de un lado a otro

Dependency injection

__construct()

public function __construct(My\Class $class){
  $this->class = $class;
}

Dependency injection

Method Injection (Laravel 5!)

protected function doSomething(My\Class $class){
  $class // Instancia de My\Class
}

Dependency injection

App::make()

protected function doSomething(){
  $myClass = App::make('My\Class'); 
}

Interfaces

public function __construct(My\ClassInterface $class){
  $this->class = $class;
}

NO!

Hay que decirle a Laravel qué implementación usar

binding

App::bind('My\ClassInterface', 'My\ClassImplementation');

Service providers

<?php namespace Illuminate\Filesystem;

use Illuminate\Support\ServiceProvider;

class FilesystemServiceProvider extends ServiceProvider {

   /**
    * Register the service provider.
    *
    * @return void
    */
   public function register()
   {
      $this->app->bindShared('files', function() { return new Filesystem; });
   }

}

Laravel 4 - IoC Container

By Pablo Chiappetti

Laravel 4 - IoC Container

IoC Container e Injección de Dependencias en Laravel 4

  • 974