Skip to content

Class Phalcon\Di

implements Phalcon\DiInterface, ArrayAccess

Source on GitHub

Phalcon\Di is a component that implements Dependency Injection/Service Location of services and it's itself a container for them.

Since Phalcon is highly decoupled, Phalcon\Di is essential to integrate the different components of the framework. The developer can also use this component to inject dependencies and manage global instances of the different classes used in the application.

Basically, this component implements the Inversion of Control pattern. Applying this, the objects do not receive their dependencies using setters or constructors, but requesting a service dependency injector. This reduces the overall complexity, since there is only one way to get the required dependencies within a component.

Additionally, this pattern increases testability in the code, thus making it less prone to errors.

<?php

use Phalcon\Di;
use Phalcon\Http\Request;

$di = new Di();

// Using a string definition
$di->set("request", Request::class, true);

// Using an anonymous function
$di->setShared(
    "request",
    function () {
        return new Request();
    }
);

$request = $di->getRequest();

Methods

public __construct ()

Phalcon\Di constructor

public setInternalEventsManager (Phalcon\Events\ManagerInterface $eventsManager)

Sets the internal event manager

public getInternalEventsManager ()

Returns the internal event manager

public set (mixed $name, mixed $definition, [mixed $shared])

Registers a service in the services container

public setShared (mixed $name, mixed $definition)

Registers an "always shared" service in the services container

public remove (mixed $name)

Removes a service in the services container It also removes any shared instance created for the service

public attempt (mixed $name, mixed $definition, [mixed $shared])

Attempts to register a service in the services container Only is successful if a service hasn't been registered previously with the same name

public setRaw (mixed $name, Phalcon\Di\ServiceInterface $rawDefinition)

Sets a service using a raw Phalcon\Di\Service definition

public getRaw (mixed $name)

Returns a service definition without resolving

public getService (mixed $name)

Returns a Phalcon\Di\Service instance

public get (mixed $name, [mixed $parameters])

Resolves the service based on its configuration

public mixed getShared (string $name, [array $parameters])

Resolves a service, the resolved service is stored in the DI, subsequent requests for this service will return the same instance

public has (mixed $name)

Check whether the DI contains a service by a name

public wasFreshInstance ()

Check whether the last service obtained via getShared produced a fresh instance or an existing one

public getServices ()

Return the services registered in the DI

public offsetExists (mixed $name)

Check if a service is registered using the array syntax

public offsetSet (mixed $name, mixed $definition)

Allows to register a shared service using the array syntax

<?php

$di["request"] = new \Phalcon\Http\Request();

public offsetGet (mixed $name)

Allows to obtain a shared service using the array syntax

<?php

var_dump($di["request"]);

public offsetUnset (mixed $name)

Removes a service from the services container using the array syntax

public __call (mixed $method, [mixed $arguments])

Magic method to get or set services using setters/getters

public register (Phalcon\Di\ServiceProviderInterface $provider)

Registers a service provider.

<?php

use Phalcon\DiInterface;
use Phalcon\Di\ServiceProviderInterface;

class SomeServiceProvider implements ServiceProviderInterface
{
    public function register(DiInterface $di)
    {
        $di->setShared('service', function () {
            // ...
        });
    }
}

public static setDefault (Phalcon\DiInterface $dependencyInjector)

Set a default dependency injection container to be obtained into static methods

public static getDefault ()

Return the latest DI created

public static reset ()

Resets the internal default DI

public loadFromYaml (mixed $filePath, [array $callbacks])

Loads services from a yaml file.

<?php

$di->loadFromYaml(
    "path/services.yaml",
    [
        "!approot" => function ($value) {
            return dirname(__DIR__) . $value;
        }
    ]
);
And the services can be specified in the file as:

<?php

myComponent:
    className: \Acme\Components\MyComponent
    shared: true

group:
    className: \Acme\Group
    arguments:
        - type: service
          name: myComponent

user:
   className: \Acme\User

public loadFromPhp (mixed $filePath)

Loads services from a php config file.

<?php

$di->loadFromPhp("path/services.php");
And the services can be specified in the file as:

<?php

return [
     'myComponent' => [
         'className' => '\Acme\Components\MyComponent',
         'shared' => true,
     ],
     'group' => [
         'className' => '\Acme\Group',
         'arguments' => [
             [
                 'type' => 'service',
                 'service' => 'myComponent',
             ],
         ],
     ],
     'user' => [
         'className' => '\Acme\User',
     ],
];

protected loadFromConfig (Phalcon\Config $config)

Loads services from a Config object.


Class Phalcon\Di\Exception

extends class Phalcon\Exception

implements Throwable

Source on GitHub

Methods

final private Exception __clone () inherited from Exception

Clone the exception

public __construct ([mixed $message], [mixed $code], [mixed $previous]) inherited from Exception

Exception constructor

public __wakeup () inherited from Exception

...

final public string getMessage () inherited from Exception

Gets the Exception message

final public int getCode () inherited from Exception

Gets the Exception code

final public string getFile () inherited from Exception

Gets the file in which the exception occurred

final public int getLine () inherited from Exception

Gets the line in which the exception occurred

final public array getTrace () inherited from Exception

Gets the stack trace

final public Exception getPrevious () inherited from Exception

Returns previous Exception

final public Exception getTraceAsString () inherited from Exception

Gets the stack trace as a string

public string __toString () inherited from Exception

String representation of the exception


Class Phalcon\Di\FactoryDefault

extends class Phalcon\Di

implements ArrayAccess, Phalcon\DiInterface

Source on GitHub

This is a variant of the standard Phalcon\Di. By default it automatically registers all the services provided by the framework. Thanks to this, the developer does not need to register each service individually providing a full stack framework

Methods

public __construct ()

Phalcon\Di\FactoryDefault constructor

public setInternalEventsManager (Phalcon\Events\ManagerInterface $eventsManager) inherited from Phalcon\Di

Sets the internal event manager

public getInternalEventsManager () inherited from Phalcon\Di

Returns the internal event manager

public set (mixed $name, mixed $definition, [mixed $shared]) inherited from Phalcon\Di

Registers a service in the services container

public setShared (mixed $name, mixed $definition) inherited from Phalcon\Di

Registers an "always shared" service in the services container

public remove (mixed $name) inherited from Phalcon\Di

Removes a service in the services container It also removes any shared instance created for the service

public attempt (mixed $name, mixed $definition, [mixed $shared]) inherited from Phalcon\Di

Attempts to register a service in the services container Only is successful if a service hasn't been registered previously with the same name

public setRaw (mixed $name, Phalcon\Di\ServiceInterface $rawDefinition) inherited from Phalcon\Di

Sets a service using a raw Phalcon\Di\Service definition

public getRaw (mixed $name) inherited from Phalcon\Di

Returns a service definition without resolving

public getService (mixed $name) inherited from Phalcon\Di

Returns a Phalcon\Di\Service instance

public get (mixed $name, [mixed $parameters]) inherited from Phalcon\Di

Resolves the service based on its configuration

public mixed getShared (string $name, [array $parameters]) inherited from Phalcon\Di

Resolves a service, the resolved service is stored in the DI, subsequent requests for this service will return the same instance

public has (mixed $name) inherited from Phalcon\Di

Check whether the DI contains a service by a name

public wasFreshInstance () inherited from Phalcon\Di

Check whether the last service obtained via getShared produced a fresh instance or an existing one

public getServices () inherited from Phalcon\Di

Return the services registered in the DI

public offsetExists (mixed $name) inherited from Phalcon\Di

Check if a service is registered using the array syntax

public offsetSet (mixed $name, mixed $definition) inherited from Phalcon\Di

Allows to register a shared service using the array syntax

<?php

$di["request"] = new \Phalcon\Http\Request();

public offsetGet (mixed $name) inherited from Phalcon\Di

Allows to obtain a shared service using the array syntax

<?php

var_dump($di["request"]);

public offsetUnset (mixed $name) inherited from Phalcon\Di

Removes a service from the services container using the array syntax

public __call (mixed $method, [mixed $arguments]) inherited from Phalcon\Di

Magic method to get or set services using setters/getters

public register (Phalcon\Di\ServiceProviderInterface $provider) inherited from Phalcon\Di

Registers a service provider.

<?php

use Phalcon\DiInterface;
use Phalcon\Di\ServiceProviderInterface;

class SomeServiceProvider implements ServiceProviderInterface
{
    public function register(DiInterface $di)
    {
        $di->setShared('service', function () {
            // ...
        });
    }
}

public static setDefault (Phalcon\DiInterface $dependencyInjector) inherited from Phalcon\Di

Set a default dependency injection container to be obtained into static methods

public static getDefault () inherited from Phalcon\Di

Return the latest DI created

public static reset () inherited from Phalcon\Di

Resets the internal default DI

public loadFromYaml (mixed $filePath, [array $callbacks]) inherited from Phalcon\Di

Loads services from a yaml file.

<?php

$di->loadFromYaml(
    "path/services.yaml",
    [
        "!approot" => function ($value) {
            return dirname(__DIR__) . $value;
        }
    ]
);
And the services can be specified in the file as:

<?php

myComponent:
    className: \Acme\Components\MyComponent
    shared: true

group:
    className: \Acme\Group
    arguments:
        - type: service
          name: myComponent

user:
   className: \Acme\User

public loadFromPhp (mixed $filePath) inherited from Phalcon\Di

Loads services from a php config file.

<?php

$di->loadFromPhp("path/services.php");
And the services can be specified in the file as:

<?php

return [
     'myComponent' => [
         'className' => '\Acme\Components\MyComponent',
         'shared' => true,
     ],
     'group' => [
         'className' => '\Acme\Group',
         'arguments' => [
             [
                 'type' => 'service',
                 'service' => 'myComponent',
             ],
         ],
     ],
     'user' => [
         'className' => '\Acme\User',
     ],
];

protected loadFromConfig (Phalcon\Config $config) inherited from Phalcon\Di

Loads services from a Config object.


Class Phalcon\Di\FactoryDefault\Cli

extends class Phalcon\Di\FactoryDefault

implements Phalcon\DiInterface, ArrayAccess

Source on GitHub

This is a variant of the standard Phalcon\Di. By default it automatically registers all the services provided by the framework. Thanks to this, the developer does not need to register each service individually. This class is specially suitable for CLI applications

Methods

public __construct ()

Phalcon\Di\FactoryDefault\Cli constructor

public setInternalEventsManager (Phalcon\Events\ManagerInterface $eventsManager) inherited from Phalcon\Di

Sets the internal event manager

public getInternalEventsManager () inherited from Phalcon\Di

Returns the internal event manager

public set (mixed $name, mixed $definition, [mixed $shared]) inherited from Phalcon\Di

Registers a service in the services container

public setShared (mixed $name, mixed $definition) inherited from Phalcon\Di

Registers an "always shared" service in the services container

public remove (mixed $name) inherited from Phalcon\Di

Removes a service in the services container It also removes any shared instance created for the service

public attempt (mixed $name, mixed $definition, [mixed $shared]) inherited from Phalcon\Di

Attempts to register a service in the services container Only is successful if a service hasn't been registered previously with the same name

public setRaw (mixed $name, Phalcon\Di\ServiceInterface $rawDefinition) inherited from Phalcon\Di

Sets a service using a raw Phalcon\Di\Service definition

public getRaw (mixed $name) inherited from Phalcon\Di

Returns a service definition without resolving

public getService (mixed $name) inherited from Phalcon\Di

Returns a Phalcon\Di\Service instance

public get (mixed $name, [mixed $parameters]) inherited from Phalcon\Di

Resolves the service based on its configuration

public mixed getShared (string $name, [array $parameters]) inherited from Phalcon\Di

Resolves a service, the resolved service is stored in the DI, subsequent requests for this service will return the same instance

public has (mixed $name) inherited from Phalcon\Di

Check whether the DI contains a service by a name

public wasFreshInstance () inherited from Phalcon\Di

Check whether the last service obtained via getShared produced a fresh instance or an existing one

public getServices () inherited from Phalcon\Di

Return the services registered in the DI

public offsetExists (mixed $name) inherited from Phalcon\Di

Check if a service is registered using the array syntax

public offsetSet (mixed $name, mixed $definition) inherited from Phalcon\Di

Allows to register a shared service using the array syntax

<?php

$di["request"] = new \Phalcon\Http\Request();

public offsetGet (mixed $name) inherited from Phalcon\Di

Allows to obtain a shared service using the array syntax

<?php

var_dump($di["request"]);

public offsetUnset (mixed $name) inherited from Phalcon\Di

Removes a service from the services container using the array syntax

public __call (mixed $method, [mixed $arguments]) inherited from Phalcon\Di

Magic method to get or set services using setters/getters

public register (Phalcon\Di\ServiceProviderInterface $provider) inherited from Phalcon\Di

Registers a service provider.

<?php

use Phalcon\DiInterface;
use Phalcon\Di\ServiceProviderInterface;

class SomeServiceProvider implements ServiceProviderInterface
{
    public function register(DiInterface $di)
    {
        $di->setShared('service', function () {
            // ...
        });
    }
}

public static setDefault (Phalcon\DiInterface $dependencyInjector) inherited from Phalcon\Di

Set a default dependency injection container to be obtained into static methods

public static getDefault () inherited from Phalcon\Di

Return the latest DI created

public static reset () inherited from Phalcon\Di

Resets the internal default DI

public loadFromYaml (mixed $filePath, [array $callbacks]) inherited from Phalcon\Di

Loads services from a yaml file.

<?php

$di->loadFromYaml(
    "path/services.yaml",
    [
        "!approot" => function ($value) {
            return dirname(__DIR__) . $value;
        }
    ]
);
And the services can be specified in the file as:

<?php

myComponent:
    className: \Acme\Components\MyComponent
    shared: true

group:
    className: \Acme\Group
    arguments:
        - type: service
          name: myComponent

user:
   className: \Acme\User

public loadFromPhp (mixed $filePath) inherited from Phalcon\Di

Loads services from a php config file.

<?php

$di->loadFromPhp("path/services.php");
And the services can be specified in the file as:

<?php

return [
     'myComponent' => [
         'className' => '\Acme\Components\MyComponent',
         'shared' => true,
     ],
     'group' => [
         'className' => '\Acme\Group',
         'arguments' => [
             [
                 'type' => 'service',
                 'service' => 'myComponent',
             ],
         ],
     ],
     'user' => [
         'className' => '\Acme\User',
     ],
];

protected loadFromConfig (Phalcon\Config $config) inherited from Phalcon\Di

Loads services from a Config object.


Abstract class Phalcon\Di\Injectable

implements Phalcon\Di\InjectionAwareInterface, Phalcon\Events\EventsAwareInterface

Source on GitHub

This class allows to access services in the services container by just only accessing a public property with the same name of a registered service

Methods

public setDI (Phalcon\DiInterface $dependencyInjector)

Sets the dependency injector

public getDI ()

Returns the internal dependency injector

public setEventsManager (Phalcon\Events\ManagerInterface $eventsManager)

Sets the event manager

public getEventsManager ()

Returns the internal event manager

public __get (string $propertyName)

Magic method __get to easily get access to services through the name of them


Interface Phalcon\Di\InjectionAwareInterface

Source on GitHub

Methods

abstract public setDI (Phalcon\DiInterface $dependencyInjector)

...

abstract public getDI ()

...


Class Phalcon\Di\Service

implements Phalcon\Di\ServiceInterface

Source on GitHub

Represents individually a service in the services container

<?php

$service = new \Phalcon\Di\Service(
    "request",
    "Phalcon\Http\Request"
);

$request = service->resolve();

Methods

final public __construct (string $name, mixed $definition, [boolean $shared])

public getName ()

Returns the service's name

public setShared (mixed $shared)

Sets if the service is shared or not

public isShared ()

Check whether the service is shared or not

public setSharedInstance (mixed $sharedInstance)

Sets/Resets the shared instance related to the service

public setDefinition (mixed $definition)

Set the service definition

public mixed getDefinition ()

Returns the service definition

public mixed resolve ([array $parameters], [Phalcon\DiInterface $dependencyInjector])

Resolves the service

public setParameter (mixed $position, array $parameter)

Changes a parameter in the definition without resolve the service

public array getParameter (int $position)

Returns a parameter in a specific position

public isResolved ()

Returns true if the service was resolved

public static __set_state (array $attributes)

Restore the internal state of a service


Class Phalcon\Di\Service\Builder

Source on GitHub

This class builds instances based on complex definitions

Methods

private mixed _buildParameter (Phalcon\DiInterface $dependencyInjector, int $position, array $argument)

Resolves a constructor/call parameter

private _buildParameters (Phalcon\DiInterface $dependencyInjector, array $arguments)

Resolves an array of parameters

public mixed build (Phalcon\DiInterface $dependencyInjector, array $definition, [array $parameters])

Builds a service using a complex service definition


Interface Phalcon\Di\ServiceInterface

Source on GitHub

Methods

abstract public getName ()

...

abstract public setShared (mixed $shared)

...

abstract public isShared ()

...

abstract public setDefinition (mixed $definition)

...

abstract public getDefinition ()

...

abstract public resolve ([mixed $parameters], [Phalcon\DiInterface $dependencyInjector])

...

abstract public setParameter (mixed $position, array $parameter)

...

abstract public static __set_state (array $attributes)

...


Interface Phalcon\Di\ServiceProviderInterface

Source on GitHub

Methods

abstract public register (Phalcon\DiInterface $di)

...


Interface Phalcon\DiInterface

implements ArrayAccess

Source on GitHub

Methods

abstract public set (mixed $name, mixed $definition, [mixed $shared])

...

abstract public setShared (mixed $name, mixed $definition)

...

abstract public remove (mixed $name)

...

abstract public attempt (mixed $name, mixed $definition, [mixed $shared])

...

abstract public get (mixed $name, [mixed $parameters])

...

abstract public getShared (mixed $name, [mixed $parameters])

...

abstract public setRaw (mixed $name, Phalcon\Di\ServiceInterface $rawDefinition)

...

abstract public getRaw (mixed $name)

...

abstract public getService (mixed $name)

...

abstract public has (mixed $name)

...

abstract public wasFreshInstance ()

...

abstract public getServices ()

...

abstract public static setDefault (Phalcon\DiInterface $dependencyInjector)

...

abstract public static getDefault ()

...

abstract public static reset ()

...

abstract public offsetExists (mixed $offset) inherited from ArrayAccess

...

abstract public offsetGet (mixed $offset) inherited from ArrayAccess

...

abstract public offsetSet (mixed $offset, mixed $value) inherited from ArrayAccess

...

abstract public offsetUnset (mixed $offset) inherited from ArrayAccess

...