Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

actors315/DI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

13 Commits

Repository files navigation

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();
 }
}

About

简单的DI实现

Topics

Resources

License

Stars

Watchers

Forks

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /