Может войдёшь?
Черновики Написать статью Профиль

IoC Контейнер

перевод документация 3.x

Определения

IoC контейнер - это простое средство для управления созданием объектов. С его помощью можно определить создание сложных объектов, что позволяет создать их в вашем приложении с помощью одной строки кода. Вы также можете использовать это, чтобы внедрить зависимости в классы и контроллеры.

IoC контейнеры помогут сделать ваше приложение более гибким и тестируемым. Так как вы можете установить альтернативные реализации интерфейса с контейнером, вы можете изолировать код, который вы тестируете, от внешних зависимостей с помощью [заглушек и имитаторов] (http://martinfowler.com/articles/mocksArentStubs.html).

Регистрация объекта

Регистрация создания объекта в IoC контейнере:

IoC::register('mailer', function()
{
    $transport = Swift_MailTransport::newInstance();

    return Swift_Mailer::newInstance($transport);
});

Отлично!Мы зарегистрировали создание SwiftMailer в контейнере. Но что, если мы не хотим, чтобы контейнер создавал новый экземпляр SwiftMailer каждый раз, когда нам нужно? Может быть, мы просто хотим, чтобы контейнер вернул один и тот же экземпляр создания экземпляра. Просто укажите контейнеру что объект должны быть "одиночкой"(singleton):

Регистрация синглтона в контейнере:

IoC::singleton('mailer', function()
{
    //
});

Также вы можете зарегистрировать имеющийся объект контейнера как синглтон.

Регистрация имеющегося объекта как синглтона в контейнере:

IoC::instance('mailer', $instance);

Создание объектов

Когда у вас есть зарегистрированный SwiftMailer в контейнере, вы можете создать его методом resolve класса IoC:

$mailer = IoC::resolve('mailer');

Примечание: Вам нужно также зарегистрировать контролер в контейнере.

Написать комментарий

Разметка: ? ?

Авторизуйся, чтобы прокомментировать.