Getting Started

Author Latest Version

Software License Build Status Coverage Status Quality Score Total Downloads

What is Container?

Container is a small but powerful dependency injection container that allows you to decouple components in your application in order to write clean and testable code.

Container on Packagist

Key Features

  • Interoperability. Container is an implementation of the container-interop project.
  • Speed. Because Container is small, it is also very fast.
  • Service Providers allow you to package code or configuration for packages that you reuse regularly.
  • Inflectors allow you to manipulate objects resolved through the container based on the type.
  • Delegate containers allow you to register back up containers to resolve services when they are not provided by this container.
  • Extensible. Container is modular so if you need to change or extend functionality it is very easy to do so.

Questions?

Container was created by Phil Bennett. Find him on Twitter at @philipobenito.

Installation

System Requirements

You need PHP >= 5.4.0 to use League\Container but the latest stable version of PHP is recommended.

Composer

Container is available on Packagist and can be installed using Composer:

composer require league/container

Most modern frameworks will include Composer out of the box, but ensure the following file is included:

<?php

// include the Composer autoloader
require 'vendor/autoload.php';

Going Solo

You can also use Container without using Composer by registering an autoloader function:

spl_autoload_register(function ($class) {
    $prefix = 'League\\Container\\';
    $base_dir = __DIR__ . '/src/';
    $len = strlen($prefix);
    if (strncmp($prefix, $class, $len) !== 0) {
        // no, move to the next registered autoloader
        return;
    }
    $relative_class = substr($class, $len);
    $file = $base_dir . str_replace('\\', '/', $relative_class) . '.php';
    if (file_exists($file)) {
        require $file;
    }
});

Or, use any other PSR-4 compatible autoloader.