定制 sysvyz/brunt 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

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

sysvyz/brunt

Composer 安装命令:

composer require sysvyz/brunt

包简介

PHP7 Dependency Injection Framework

README 文档

README

Brunt is a simple but powerful dependency injection framework. Since php7, reflection can be used to analyze constructors properly.

Usage

Composer

  "require": {
    "sysvyz/brunt": "1.0.*",
  },

Test

Unit tests in /test/

phpunit php vendor/bin/phpunit

Include

simply use composer dump-autoload

then include __DIR__ . '/vendor/autoload.php';

Examples

Example 1: basic usage

$injector = new Brunt\Injector(null);

/** @var Engine $engine */
$engine = $injector->get(Engine::class);

Example 2: magic get

$engine = $injector->get(Engine::class);
//is equivalent to
$engine = $injector->{Engine::class};

Example 3: define providers

$injector = new Injector(null);

//                          TOKEN           PROVIDER            CLASS
$injector->addProviders([Engine::class => ClassProvider::init(HeavyEngine::class)]);

/** @var Engine $engine */
$engine = $injector->get(Engine::class);

Example 4: Binding

Bindings are a more convenient way to define Providers

$injector->bind([

    bind('%SomeValue%')
    ->toValue(3.1415),
    
    bind(Car::class)
    ->toClass(Car::class),
    
    bind(Request::class)
        ->toFactory(function (Injector $injector) {
            return Request::createFromGlobals();
        })
])

Example 5: Singleton

Just call singleton() and the provider always returns the same object.

$injector = new Injector(null);

//                          TOKEN           PROVIDER            CLASS              SINGLETON
$injector->addProviders([Engine::class => ClassProvider::init(HeavyEngine::class)->singleton()]);

/** @var Engine $engine */
$engine = $injector->get(Engine::class);

or as binding

$injector = new Injector(null);
$injector->bind([
    
    bind(Car::class)
    ->toClass(Car::class)->singleton(),
    
]);
$car = $injector->get(Car::class)

Example 6: Lazy

Just call lazy() and the provider returns a proxy object the real object will be created on first use.

$injector = new Injector(null);

//                          TOKEN           PROVIDER            CLASS              LAZY
$injector->addProviders([Engine::class => ClassProvider::init(HeavyEngine::class)->lazy()]);

/** @var Engine $engine */
$engine = $injector->get(Engine::class); //returns a proxy object

or as binding

$injector = new Injector(null);
$injector->bind([
    
    bind(Car::class)
    ->toClass(Car::class)->lazy(),
    
]);
$car = $injector->get(Car::class) //returns a proxy object 

$car->honk() //creates the actual car and honks

the proxy object inherits from the actual class, so it can be used as if it was the object it passes instanceof and function parameter type declarations

Example 7: Lazy and Singleton

combine lazy and singleton (order doesn't matter)

bind(Car::class)->lazy()->singleton()
ClassProvider::init(Car::class)->lazy()->singleton();

Example 7: Alias

... alias

$injector->addProviders([
    HeavyEngine::class => ClassProvider::init(HeavyEngine::class)->lazy()
    Engine::class => AliasProvider::init(HeavyEngine::class)
]);
$heavyEngine = $injector->get(Engine::class); //returns a proxy object for HeavyEngine

Example 7: Hierarchy

coming up...

Example Repo:

working example using brunt

统计信息

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

GitHub 信息

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

其他信息

  • 授权协议: MIT
  • 更新时间: 2016-04-26

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固