weebel/container 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

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

weebel/container

最新稳定版本:0.1.2

Composer 安装命令:

composer require weebel/container

包简介

A simple and minimal but yet powerful container

README 文档

README

A simple and minimal but yet powerful container

Installing

Using composer:

composer require weebel/container

Usage

You must make a container instance using the following command:

$container = \Weebel\Container\Container::getInstance();

Suppose that we have a service called App\UserBuilder:

namespace App;

class UserBuilder
{
    public function __construct(public UserRepositoryInterface $userRepository, public string $type) 
    {

    }

}

Now setting instances:

$container->set('user_builder', new App\UserBuilder());
$container->set('user_builder', fn()=>new App\UserBuilder());

For getting a service from the container by id:

$container->get('user_builder');
$container->get(App\UserBuilder::class);

Setting aliases:

$container->alias('user_builder', App\UserBuilder::class);
$container->alias(App\UserBuilderInterface::class, App\UserBuilder::class);
  • Remember when defining an alias, the result of the both of the keys are exactly the same which means

Defining multiple instances or tags for service

$container->set('user_builder', App\UserBuilder::class);
$container->set('admin_user_builder', App\UserBuilder::class);

Setting arguments for an instance or tag

$container->addArgument('admin_user_builder', 'type', 'admin');
$container->addArgument(App\UserBuilder::class, 'type', 'normal');

If you want to use a tag as an argument you must use '@' before the name of it. Otherwise, it would be considered as a string

$container->set('admin_repository', AdminRepository::class);
$container->addArgument(App\UserBuilder::class, 'userRepository', '@admin_repository');
$container->addArgument(App\UserBuilder::class, 'userRepository', fn(\Psr\Container\ContainerInterface $container)=> $container->get(AdminRepository::class));
$container->addArgument(App\UserBuilder::class, 'userRepository', '@'.AdminRepository::class);

统计信息

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

GitHub 信息

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

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-01-10