Инъекция конструктора в Рестлер


Возможно ли передать аргументы классу API для внедрения конструктора? Например, в index.php У меня есть следующее:

$r->addAPIClass('Contacts', '');

И Contacts.php выглядит примерно так:

class Contacts
{
    private $v;

    public function __construct(Validation v)
    {
        $this->v = v;
    }
}

Как бы я сделал это с Restler?

Author: zongweil, 2014-03-24

1 answers

Restler 3 RC5 имеет контейнер для внедрения зависимостей под названием Scope, который отвечает за создание новых экземпляров любого класса по их имени, это удобно для этой цели.

Как только вы зарегистрируете класс Contacts с его зависимостью с помощью метода register, он будет создан лениво, когда его попросят

<?php
include '../vendor/autoload.php';

use Luracast\Restler\Scope;
use Luracast\Restler\Restler;

Scope::register('Contacts', function () {
    return new Contacts(Scope::get('Validation'));
});

$r = new Restler();
$r->addAPIClass('Contacts', '');
$r->handle();

С помощью Scope::get('Validation') мы также можем зарегистрировать Validation, если у него есть какие-либо зависимости

 6
Author: Arul Kumaran, 2014-03-25 05:29:38