[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PDIC - Property Dependency Injection Container
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
chee
Версия 1.1.2:
- Добавлена возможность конфигурирования контейнера, можно отключить разные примочки

$configuration = new \PDIC\Configuration;
$configuration->isSupportForcedInjactionToProperty = false;
$configuration->isSupportInheritInterfaces = false;
$configuration->isSupportInheritTraits = false;

$container = new \PDIC\Container($map, [], $configuration);

В этом примере будет отключено наследование зависимостей по интерфейсу и трейтам, а также запрещено использовать насильно внедрять свойства в защищенные методы

Доступные опции конфигурирования
$isSupportInjectionToConstructor = true;
$isSupportInjectionToProperty = true;
$isSupportInjectionToSetter = false; // Отключена так как нет поддержки сеттеров
$isSupportForcedInjactionToProperty = true;
$isSupportInheritTraits = true;
$isSupportInheritInterfaces = true;
$isSupportInheritParents = true;
$isSupportInherit = true;
$isSupportMediator = true;
$isCheckPropertyExists = true;


С помощью этой конфигурации можно уменьшить затраты на внедрение зависимостей в 1.5 - 2 раза (отключив наследование, медиатор, насильное внедрение через свойства, внедрение через конструктор, проверку существования свойств)

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
chee
Версия 1.1.3:
- Добавлена возможность задавать псевдонимы для запроса зависимостей через метод get

Пример:
$map = [
'?factoryA' => '*' . A::class,
'?serviceA' => A::class,
A::class => [
'b' => B::class,
],
];


$container = new \PDIC\Container($map);
$container->get('factoryA'); // Вернёт фабричную сущность
$container->get('serviceA'); // Вернёт сервисную сущность


Есть псевдоним на определен, для запрашиваемой сущности, то будет возвращена фабричная сущность.

Данная функция делает контейнер совместимым с другими контейнерами, а также позволяет через метод get получить сервисную сущность, раньше get возвращался всегда фабричные сущности

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
chee
Версия 1.1.41:
- Переработаны тесты
- Добавлена документация

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
chee
Версия 1.1.7:
- Выделенный билдер;

$pdic = new \PDIC\Container();

$builder = $container(); // возвращает анонимную функцию
$builder(\stdClass::class); // вернет новый объект с настроенными зависимостями

- Поддержка PSR-11 контейнеров как источников зависимостей;

$pimple = new \Pimple\Container();
$pimple['foo'] = $pimple->factory(function () {
$foo = new \stdClass();
$foo->time = microtime(true);

return $foo;
});
$pimple['bar'] = function () {
$bar = new \stdClass();
$bar->time = microtime(true);

return $bar;
};

$pdic = new \PDIC\Container([
'?newFoo' => '#pimple:foo',
'?bar' => '#pimple:bar'
], [
'pimple' => new \Pimple\Psr11\Container($pimple),
]);


$newFoo = $pdic->get('newFoo');
$bar = $pdic->get('bar');

- Общие доработки по улучшению качества выводимых ошибок и доработка тестов;
- Алиасы стали обязательными для использования в случае если нужно получить сущность через метод get контейнера, алиасы больше нельзя выключить в объекте конфигурации;

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.