Skip to content
简单的DI实现
PHP
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
tests
.gitignore
.travis.yml
LICENSE
README.md
composer.json
phpunit.xml

README.md

Twinkle\DI

实现PSR-11容器接口

Build Status

安装

composer require twinkle/di --prefer-dist --optimize-autoloader

示例

Container

$definitions = [
    'hello' => [
        'class' => \HelloWorld::class,
    ]
];
$container = new \Twinkle\DI\Container($definitions);

// 是否注入容器
isset($container['hello'])

// 获取实例
$instance = $container['hello'];
$instance->someMethod();

// 释放
unset($container['hello']);

ServiceLocator

namespace App\Services;
class HelloService
{

    public function sayHello()
    {
        return 'hello';
    }
}

namespace App\Controllers;
use App\Services\HelloService;
use Twinkle\DI\ServiceLocatorTrait;

/**
 * Class HelloController
 * @package App\Controllers
 * @property HelloService $helloService
 */
class HelloController
{

    use ServiceLocatorTrait;

    public static function supportAutoNamespaces()
    {
        return [
            'App\\Services',
            'Twinkle\\Services'
        ];
    }

    public function indexAction()
    {
        echo $this->helloService->sayHello();
    }

}

You can’t perform that action at this time.