raylin666/container

IOC object container service

v1.1.0 2021-12-14 13:18 UTC

This package is auto-updated.

Last update: 2024-05-14 19:24:58 UTC


README

GitHub release PHP version GitHub license

环境要求

  • PHP >=7.2

安装说明

composer require "raylin666/container"

使用方式

新增服务类

<?php

require_once 'vendor/autoload.php';

use Raylin666\Container\Container;
use Raylin666\Container\ContainerFactory;

$container = ContainerFactory::getContainer();

// 绑定容器
$container->bind(DateTime::class, DateTime::class);

// 是否有绑定该容器
$container->has(DateTime::class);

// 实例化容器
$container->make(DateTime::class, ['timezone' => new DateTimeZone('UTC')]);

$container->bind('datetimezone', function () {
    return new DateTimeZone('UTC');
});

// 获取容器, 优先查看是否有已实例化的容器, 如果有则直接取出, 如果没有则实例化容器(make)并返回
$container->get('datetimezone');
// 为容器设置别名, 一般情况下该别名可用来作为装饰者, 因为本身就是装饰器设计模式, 比如 laravel 的 alias 就类似该原理
$container->alias('tzone', 'datetimezone');

$container->get('tzone');

$container->bind(DateTimeZone::class, DateTimeZone::class);

$container->make(DateTimeZone::class, ['timezone' => 'PRC']);

// ... 更多功能可阅读源码

更新日志

请查看 CHANGELOG.md

联系

如果你在使用中遇到问题,请联系: 1099013371@qq.com. 博客: kaka 梦很美

License MIT