承接 small/dependency-injection 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

small/dependency-injection

最新稳定版本:0.1.1

Composer 安装命令:

composer require small/dependency-injection

包简介

Dependency injection library

README 文档

README

small/dependency-injection

    

A lightweight Dependency Injection Container for PHP 8.4 with autowiring, environment/parameter injection, and service definition validation.

Features

  • Service definitions with explicit parameters
  • Injection helpers:
    • injectService() – inject another service
    • injectParameter() – inject a container parameter
    • injectEnv() – inject an environment variable
    • injectConstant() – inject a PHP constant
  • Autowiring support:
    • Automatically resolves constructor dependencies for classes in configured namespaces
    • Validates against constructor signatures via reflection
  • Error safety:
    • Detects missing/invalid parameters
    • Type-checks against PHP type hints (including union & intersection types)
  • PHP 8.4 property hooks used for immutability of service definitions

Installation

composer require small/dependency-injection

If you are testing locally without Packagist:

git clone https://git.small-project.dev/lib/small-depency-injection.git
cd small-dependency-injection
composer install

Quick Start

<?php

use \Small\DependencyInjection\Container;
use \Small\DependencyInjection\ServiceLoader;
use Small\DependencyInjection\AbstractContainerConfiguration;
use function Small\DependencyInjection\injectService;
use function Small\DependencyInjection\injectParameter;

class MyConfig extends AbstractContainerConfiguration
{
    public function configure(): self
    {
        $this->parameter('secret', 'top-secret')
             ->service(
                 MyServiceInterface::class,
                 MyService::class,
                 [
                     injectParameter('secret'),
                     injectService(LoggerInterface::class),
                 ]
             )
             ->autowireNamespace('App\Services');
        return $this;
    }
}

// bootstrap
$config = new MyConfig(__DIR__ . '/composer.json');
$container = new Container(
    $loader = new ServiceLoader($config->getServiceDefinitions())
);
$myService = $container->get(MyServiceInterface::class);

Running Tests

We use Pest for tests:

composer install
composer unit-tests

License

Copyright 2025 - Sébastien Kus
Under the GNU GPL V3 license.

统计信息

  • 总下载量: 8
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: GPL-3.0-only
  • 更新时间: 2025-09-27