2017 © Pedro Peláez
 

library dice

A minimalist Dependency injection container (DIC) for PHP. Please note: This branch is only compatible with PHP5.6. 5.5, 5.4 and 5.3 compatible version is available as a separate branch on github.

image

composepress/dice

A minimalist Dependency injection container (DIC) for PHP. Please note: This branch is only compatible with PHP5.6. 5.5, 5.4 and 5.3 compatible version is available as a separate branch on github.

  • Friday, March 2, 2018
  • by pcfreak30
  • Repository
  • 1 Watchers
  • 0 Stars
  • 67 Installations
  • PHP
  • 3 Dependents
  • 0 Suggesters
  • 50 Forks
  • 0 Open issues
  • 4 Versions
  • 0 % Grown

The README.md

Dice PHP Dependency Injection Container

Dice is a minimalist Dependency Injection Container for PHP with a focus on being lightweight and fast as well as requiring as little configuration as possible., (*1)

Project Goals

1) To be lightweight and not a huge library with dozens of files (Dice is a single 100 line class) yet support all features (and more) offered by much more complex containers, (*2)

2) To "just work". Basic functionality should work with zero configuration, (*3)

3) Where configuration is required, it should be as minimal and reusable as possible as well as easy to use., (*4)

4) Speed!, (*5)

Installation

Just include the lightweight Dice.php in your project and it's usable without any further configuration:, (*6)

Simple example:, (*7)

b = $b;
    }
}

class B {

}

require_once 'Dice.php';
$dice = new \Dice\Dice;

$a = $dice->create('A');

var_dump($a->b); //B object

?>

Full Documentation

For complete documentation please see the Dice PHP Dependency Injection container home page, (*8)

PHP version compatibility

Dice is compatible with PHP5.4 and up, there are archived versions of Dice which supports PHP5.3 however this is no longer maintanied., (*9)

Credits

Originally developed by Tom Butler (@TomBZombie), with many thanks to daniel-meister (@daniel-meister), Garrett W. (@garrettw), maxwilms (@maxwilms) for bug fixes, suggestions and improvements., (*10)

Updates

29/10/2014 * Based on Issue #15, Dice will now only call closures if they are wrapped in \Dice\Instance. **PLEASE NOTE: THIS IS BACKWARDS INCOMPATIBLE **., (*11)

Previously Dice ran closures that were passed as substitutions, constructParams and when calling methods:, (*12)


$rule->substitutions['A'] = function() { return new A; }; $rule->call[] = ['someMethod', function() { // '2' will be provided as the first argument when someMethod is called return 2; }]; $rule->constructParams[] = function() { //'abc' will be providedas the first constructor parameter return 'abc'; };

This behaviour has changed as it makes it impossible to provide a closure as a construct parameter or when calling a method because the closure was always called and executed., (*13)

To overcome this, Dice will now only call a closures if they're wrapped in \Dice\Instance:, (*14)

$rule->substitutions['A'] = new \Dice\Instance(function() {
    return new A;
});

$rule->call[] = ['someMethod', new \Dice\Instance(function() {
// '2' will be provided as the first argument when someMethod is called
return 2;
}]);

$rule->constructParams[] = new \Dice\Instance(function() {
    //'abc' will be providedas the first constructor parameter
    return 'abc';
});

04/09/2014 * Pushed PHP5.6 branch live. This is slightly more efficient using PHP5.6 features. For PHP5.4-PHP5.5 please see the relevant branch. This version will be maintained until PHP5.6 is more widespread., (*15)

26/08/2014 * Added PHP5.6 branch. Tidied up code by using PHP5.6 features. This will be moved to master when PHP5.6 is released, (*16)

28/06/2014 * Greatly improved efficienty. Dice is now the fastest Dependency Injection Container for PHP!, (*17)

06/06/2014 * Added support for cyclic references ( https://github.com/TomBZombie/Dice/issues/7 ). Please note this is poor design but this fix will stop the infinite loop this design creates., (*18)

27/03/2014 * Removed assign() method as this duplicated functionality available using $rule->shared * Removed $callback argument in $dice->create() as the only real use for this feature can be better achieved using $rule->shareInstances * Tidied up code, removing unused/undocumented features. Dice is now even more lightweight and faster. * Fixed a bug where when using $rule->call it would use the substitution rules from the constructor on each method called * Updated Dice documentation to use shorthand array syntax, (*19)

01/03/2014 * Added test cases for the Xml Loader and Loader Callback classes * Added a JSON loader + test case * Added all test cases to a test suite * Moved to PHP5.4 array syntax. A PHP5.3 compatible version is now available in the PHP5.3 branch. * Fixed an issue where using named instances would trigger the autoloader with an invalid class name every time a class was created, (*20)

28/02/2014 * Added basic namespace support. Documentation update will follow shortly. Also moved the XML loader into its own file, you'll need to include it separately if you're using it. * Please note: CHANGES ARE NOT BACKWARDS COMPATIBLE. However they are easily fixed by doing the following find/replaces:, (*21)

    new Dice => new \Dice\Dice
    new DiceInstance => new \Dice\Instance
    new DiceRule => new \Dice\Rule

The Versions

02/03 2018

dev-master

9999999-dev http://r.je/dice.html

A minimalist Dependency injection container (DIC) for PHP. Please note: This branch is only compatible with PHP5.6. 5.5, 5.4 and 5.3 compatible version is available as a separate branch on github.

  Sources   Download

BSD-2-Clause

The Requires

  • php >=5.4.0

 

by Tom Butler

dependency injection ioc di dependency injection container

02/03 2018

0.1.0

0.1.0.0 http://r.je/dice.html

A minimalist Dependency injection container (DIC) for PHP. Please note: This branch is only compatible with PHP5.6. 5.5, 5.4 and 5.3 compatible version is available as a separate branch on github.

  Sources   Download

BSD-2-Clause

The Requires

  • php >=5.4.0

 

by Tom Butler

dependency injection ioc di dependency injection container

01/05 2017

dev-3.0-Dev

dev-3.0-Dev http://r.je/dice.html

A minimalist Dependency injection container (DIC) for PHP. Please note: This branch is only compatible with PHP5.6. 5.5, 5.4 and 5.3 compatible version is available as a separate branch on github.

  Sources   Download

BSD-2-Clause

The Requires

  • php >=7.0.0

 

by Tom Butler

dependency injection ioc di dependency injection container

08/09 2015

v1.0.x-dev

1.0.9999999.9999999-dev http://r.je/dice.html

A minimalist Dependency injection container (DIC) for PHP. Please note: This branch is only compatible with PHP5.6. 5.5, 5.4 and 5.3 compatible version is available as a separate branch on github.

  Sources   Download

BSD-2-Clause

The Requires

  • php >=5.6.0

 

by Tom Butler

dependency injection ioc di dependency injection container