PHPackages                             ride/lib-dependency - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. ride/lib-dependency

ActiveLibrary

ride/lib-dependency
===================

Dependency injection library of the Ride framework

1.2.0(1y ago)15.5k116MITPHPPHP &gt;=5.3

Since Feb 20Pushed 1y ago7 watchersCompare

[ Source](https://github.com/all-ride/ride-lib-dependency)[ Packagist](https://packagist.org/packages/ride/lib-dependency)[ RSS](/packages/ride-lib-dependency/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (2)Versions (12)Used By (16)

Ride: Dependency Injection Library
==================================

[](#ride-dependency-injection-library)

Dependency injection library of the PHP Ride framework.

This module can create objects and invoke callbacks with dynamic argument injection.

Read more about the dependency injection pattern on [Wikipedia](https://en.wikipedia.org/wiki/Dependency_injection).

What's In This Library
----------------------

[](#whats-in-this-library)

### Dependency

[](#dependency)

The *Dependency* class is used to define your class instances. You can tell what interfaces a class implements so the DependencyInjector knows when to use this instance. Define method calls to build up your instance as you need it, ready to work.

When you have multiple instances of a class, you can set an id to the dependency to specify each instance.

Dependencies can be tagged to retrieve a dependency subset for a specified interface.

Instead of literally constructing the object, a dependency can also be defined as being constructed by a factory.

### DependencyInjector

[](#dependencyinjector)

The *DependencyInjector* is the facade of this library. It has different getters to retrieve a single or multiple instances. Dependencies are requested by interface, optionally an id, or for multiple instances, tag(s).

When a requested interface, or instance dependency, is not defined in the container, an attempt is made to automatically construct the instance.

### DependencyContainer

[](#dependencycontainer)

The *DependencyContainer* is like it says, a container of dependencies. All your definitions are kept here for the dependency injector to use as it's source.

### DependencyArgumentParser

[](#dependencyargumentparser)

When defining method calls for your dependencies, you can pass arguments to those calls. You have different type of arguments. This library defines the following types by default: *null*, *scalar*, *array*, *dependency* and *call*.

By implementing the *DependencyArgumentParser* interface, you can create your own argument types. Ride will add the *parameter* and *route* type with the [ride/app](https://github.com/all-ride/ride-app) and [ride/web](https://github.com/all-ride/ride-web) modules.

Code Sample
-----------

[](#code-sample)

Check this code sample to see the possibilities of this library:

```
