[■]
codesaur/container
1=[↕]
1:1 ══ composer require codesaur/container
codesaur/container · v3.2.0
Container
Хөнгөн, хурдан, PSR-11 стандартад нийцсэн dependency injection container
[■]
Container
PSR-11 ContainerInterface-ийг хэрэгжүүлсэн, lazy loading, auto-wiring, interface binding, service alias зэрэг боломжтой DI container. Reflection ашиглан dependency-үүдийг автоматаар resolve хийж instance үүсгэнэ. codesaur экосистемийн үндсэн бүрэлдэхүүн боловч ямар ч PHP төслөөс бие даан ашиглах боломжтой.
Онцлогууд
- PSR-11 ContainerInterface хэрэгжилт
- Lazy Loading - сервисүүд зөвхөн шаардлагатай үед үүсгэгдэнэ
- Auto-wiring - constructor dependency-үүдийг автоматаар resolve хийх
- Interface Binding - interface-ийг implementation-тай холбох
- Service Aliases - нэг сервисийг олон нэрээр авах
- Closure / callable factory дэмжлэг
- Framework-agnostic, гадны хамааралгүй
Үндсэн классууд
| Класс | Үүрэг |
|---|---|
Container | PSR-11 container - set(), get(), has(), alias, binding |
ContainerException | Сервис үүсгэх үеийн алдаа |
NotFoundException | Сервис олдоогүй үеийн алдаа (PSR-11) |
Жишээ код
use codesaur\Container\Container;
// Контейнер үүсгэх / Create container
$container = new Container();
// Класс бүртгэх / Register class
$container->set(MyService::class);
// Параметртэй класс бүртгэх / Register class with parameters
$container->set(Printer::class, ['Hello, World!']);
// Сервис авах / Get service
$service = $container->get(MyService::class);
$printer = $container->get(Printer::class);
// Сервис байгаа эсэхийг шалгах / Check if service exists
if ($container->has(MyService::class)) {
$printer->print(); // Output: Hello, World!
}
Тест ажиллуулах
composer test
[■]
Info
Суулгах
composer require codesaur/container
Шаардлага
- PHP 8.2.1+
- Composer
Баримт бичиг