smorken/support

Laravel 的支持类

v10.3.0 2024-08-08 19:52 UTC

README

许可证

本软件是开源软件,根据 MIT 许可证 发布。

Laravel 框架是开源软件,根据 MIT 许可证 发布。

安装

服务提供者应自动注册。如果没有,您可以手动将 Smorken\Support\ServiceProvider::class 添加到 config/app.php 文件的 providers 部分。

绑定器

绑定器是一种从配置数组自动连接依赖的方法。我主要用它来连接存储到模型。

配置数组包含一个 concrete 键和一个 contract 键。concrete 键可以包含项目中对一个接口所有可能的实现。而 contract 键包含要使用的实际实现。

简单的依赖示例
$config = [
    'concrete' => [
        ImplOne::class => [
            'foo' => 'foo impl one', //parameters for ImplOne
        ],
    ],
    'contract' => [
        ContractOne::class => ImplOne::class,
    ],
];
$binder->bindAll($config);
通过反射创建依赖
$config = [
    'concrete' => [
        ImplOne::class => [
            'foo' => 'foo impl one',
        ],
        ImplTwo::class => [
            'foo' => 'foo impl two', //param one
            'bar' => [ //param two (reflection)
                'impl'   => ImplBar::class,
                'params' => [
                    'bar' => 'bar from impl bar in impl two',
                ],
            ],
        ],
    ],
    'contract' => [
        ContractOne::class => ImplTwo::class,
    ],
];
$binder->bindAll($config);
从容器创建依赖
$config = [
    'concrete' => [
        ImplBar::class => [
            'bar' => 'bar from prebound impl bar in impl two',
        ],
        ImplTwo::class => [
            'foo' => 'foo impl two prebound', //param one
            'bar' => [ //param two (container)
                'bound' => ContractBar::class,
            ],
        ],
    ],
    'contract' => [
        ContractBar::class => ImplBar::class,
        ContractOne::class => ImplTwo::class,
    ],
];
$binder->bindAll($config);