Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Think Container 3.0 发布!

Think Container 3.0 发布!

作者头像
Tinywan
发布于 2024-12-19 10:45:56
发布于 2024-12-19 10:45:56
15400
代码可运行
举报
文章被收录于专栏:开源技术小栈开源技术小栈
运行总次数:0
代码可运行

安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
composer require topthink/think-container

特性

  • 支持PSR-11规范
  • 支持依赖注入
  • 支持Facade门面
  • 支持容器对象绑定
  • 支持闭包绑定
  • 支持接口绑定

Container

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 获取容器实例
$container = \think\Container::getInstance();
// 绑定一个类、闭包、实例、接口实现到容器
$container->bind('cache', '\app\common\Cache');
// 判断是否存在对象实例
$container->has('cache');
// 从容器中获取对象的唯一实例
$container->get('cache');
// 从容器中获取对象,没有则自动实例化
$container->make('cache');
// 删除容器中的对象实例
$container->delete('cache');
// 执行某个方法或者闭包 支持依赖注入
$container->invoke($callable, $vars);
// 执行某个类的实例化 支持依赖注入
$container->invokeClass($class, $vars);
// 静态方法获取容器对象实例 不存在则自动实例化
\think\Container::pull('cache');

对象化操作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 获取容器实例
$container = \think\Container::getInstance();
// 绑定一个类、闭包、实例、接口实现到容器
$container->cache = '\app\common\Cache';
// 判断是否存在对象实例
isset($container->cache);
// 从容器中获取对象的唯一实例
$container->cache;
// 删除容器中的对象实例
unset($container->cache);

Facade

定义一个app\facade\App类之后,即可以静态方式调用\think\App类的动态方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
namespace think;
class App 
{
 public function name(){
  return 'app';
 }
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
namespace app\facade;

use think\Facade;

class App extends Facade
{
    /**
     * 获取当前Facade对应类名
     * @access protected
     * @return string
     */
    protectedstaticfunction getFacadeClass()
    {
return'\think\App';
    }
}

然后就可以静态方式调用动态方法了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
use app\facade\App;

echo App::name(); // app
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-12-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
PHP系列 | 依赖注入容器和服务定位器
依赖注入(Dependency Injection,DI)容器就是一个对象,它知道怎样初始化并配置对象及其依赖的所有对象。注册会用到一个依赖关系名称和一个依赖关系的定义。依赖关系名称可以是一个类名,一个接口名或一个别名。依赖关系的定义可以是一个类名,一个配置数组,或者一个 PHP 回调。
Tinywan
2019/08/20
1.1K0
如何使用PHP构建IoC容器,实现依赖注入!
容器应该是单例实例,并在管理依赖项时充当单一事实来源。由于静态函数是全局的,因此它们可用于每次创建和返回相同的容器实例。
Tinywan
2024/12/19
2440
如何使用PHP构建IoC容器,实现依赖注入!
【译】深入研究 Laravel 的依赖注入容器
原文地址:Laravel's Dependency Injection Container in Depth 下面是中文翻译。 Laravel拥有强大的控制反转(IoC)/依赖注入(DI) 容器。不幸的是官方文档并没有涵盖所有可用的功能,因此,我决定尝试写文档为自己记录一下。以下是基于Laravel 5.4.26,其他版本可能有所不同。 依赖注入简介 我不会尝试在这里解释DI/IOC背后的原理,如果你不熟悉它们,你可能需要去阅读由Fabien Potencier(Symfony框架作者)创建的什么是依赖注入
前端教程
2018/03/29
5K0
深入剖析 Laravel 服务容器
之前在 深度挖掘 Laravel 生命周期 一文中,我们有去探究 Laravel 究竟是如何接收 HTTP 请求,又是如何生成响应并最终呈现给用户的工作原理。
柳公子
2018/09/17
9.4K0
在Swoole上使用双容器策略实现请求隔离的依赖注入
容器(container)技术(可以理解为全局的工厂方法), 已经是现代项目的标配. 基于容器, 可以进一步实现控制反转, 依赖注入. Laravel 的巨大成功就是构建在它非常强大的IoC容器 illuminate/container 基础上的. 而 PSR-11 定义了标准的 container , 让更多的 PHP 项目依赖容器实现依赖解耦, 面向接口编程.
桶哥
2019/07/23
1.7K0
Laravel核心概念:服务容器(ServiceContainer),服务提供者(Service Provider),门面(Facade),契约(Contracts)
学了两个多月的laravel一直没有去研究他的核心概念,在文档上看到些名词 “服务容器”,“服务提供者”...整个人人都是懵的下面结合我这几天的学习谈谈我的理解。
切图仔
2022/09/08
3K0
Laravel核心概念:服务容器(ServiceContainer),服务提供者(Service Provider),门面(Facade),契约(Contracts)
Laravel5.3之Container源码解析
说明:本文主要学习Laravel中Container的源码,主要学习Container的绑定和解析过程,和解析过程中的依赖解决。分享自己的研究心得,希望对别人有所帮助。实际上Container的绑定主要有三种方式:bind(),singleton(),instance(),且singleton()只是一种'shared' = true的bind(),这些已经在Laravel学习笔记之IoC Container实例化源码解析聊过,其实现方法并不复杂。当Service通过Service Provider绑定到Container中后,当需要该Service时,是需要Container帮助自动解析make()。OK,下面聊聊自动解析过程,研究下Container是如何在自动解析Service时解决该Service的依赖问题的。
botkenni
2019/09/02
1.6K0
Laravel5.3之Container源码解析
PHP MCP 服务器 v1.0.0 发布!
PHP MCP Server:Model Context Protocol(MCP)服务器的核心PHP实现。
Tinywan
2025/05/05
5830
PHP MCP 服务器 v1.0.0 发布!
Laravel神奇的服务容器
Laravel的核心是IocContainer, 文档中称其为“服务容器”,服务容器是一个用于管理类依赖和执行依赖注入的强大工具,Laravel中的功能模块比如 Route、Eloquent ORM、Request、Response等等等等,实际上都是与核心无关的类模块提供的,这些类从注册到实例化,最终被我们所使用,其实都是 laravel 的服务容器负责的。
KevinYan
2019/10/13
1.7K0
Thinkphp5.1中用到的设计模式(依赖注入,容器,Facade门面模式)
原始代码 <?php //数据库操作 /** * Class Db * 辅助类 */ class Db { //数据库链接 public function init()
九霄道长
2021/03/02
1.2K0
PHP 语言官方团队推荐的依赖注入工具
依赖注入(Dependency Injection,DI)容器就是一个对象,它知道怎样初始化并配置对象及其依赖的所有对象。
Tinywan
2024/03/02
3390
PHP 语言官方团队推荐的依赖注入工具
ThinkPHP v5.1.0 发布 — 新年献礼
ThinkPHP V5.1 —— 12 载初心不改,你值得信赖的 PHP 框架。期盼已久的 V5.1.0 版本今日正式发布,祝大家 2018 年新年快乐!
Debian中国
2018/12/20
5310
Laravel源码笔记(一)程序结构与生命周期
说起PHP框架,就不得不提大名鼎鼎的Lavarel。作为一个“专为Web艺术家而创造”的框架,其优雅、简洁的开发体验吸引了一大批Web开发者,并成为PHP社区中使用最为广泛的全栈框架之一。虽然随着golang、nodejs等server化后台语言的大行其道,让传统的fast-cgi模式框架日渐式微,但Lavarel中采用的组件化开发、依赖注入、横向代理等设计思想,依然值得我们学习与借鉴。笔者在阅读Laravel框架源码的过程,总结了一些自己的理解与体会同大家分享。
asterDY
2020/03/20
2.7K0
Laravel源码笔记(一)程序结构与生命周期
Laravel框架关键技术解析
1.index.php:自动加载函数的添加、服务容器实例化与服务注册、路由加载、请求实例化与路由分发、响应生成与发送
硬核项目经理
2019/08/06
13.9K0
PSR-11 容器接口
设定 ContainerInterface 的目的是为了标准化框架或类库如何使用容器来获取对象和参数(本文其它部分称之为 实体 )。
mousemin
2023/06/10
4840
Laravel之IOC Container的工作机制、理解Service Provider和中间件
依赖注入:不需要通过new关键字去实例化对象,laravel用了PHP的一个机制:反射机制。一层一层向上找,然后自动实例化对象,而不需要自己去手动去new类。深入浅出理解依赖注入
唐成勇
2019/05/26
1K0
Laravel学习教程之IOC容器的介绍与用例
前言 Laravel使用IoC(Inversion of Control,控制倒转,这是一个设计模式,可以先查看下百科)容器这个强有力的工具管理类依赖。依赖注入(也是一种设计模式,一般用于实现IoC)是一个不用编写固定代码来处理类之间依赖的方法,相反的,这些依赖是在运行时注入的,这样允许处理依赖时具有更大的灵活性。 理解 Laravel IoC容器是构建强大应用程序所必要的,也有助于Laravel 核心本身。下面话不多说了,来一起看看详细的介绍吧。 基本用例 绑定一个类型到容器 IoC 容器有两种方法来解决依赖关系:通过闭包回调或者自动解析。首先,我们来探究一下闭包回调。首先,需要绑定一个“类型”到容器中:
用户2323866
2021/06/29
8820
Laravel之容器1. 背景2. DI3. 依赖反转4. Laravel中的容器参考
顾名思义,容器即存放东西的地方,里面存放的可以是文本、数值,甚至是对象、接口、回调函数。
zhuanxu
2018/08/23
5440
Laravel之容器1. 背景2. DI3. 依赖反转4. Laravel中的容器参考
Laravel源码分析之Route
路由是外界访问Laravel应用程序的通路或者说路由定义了Laravel的应用程序向外界提供服务的具体方式:通过指定的URI、HTTP请求方法以及路由参数(可选)才能正确访问到路由定义的处理程序。无论URI对应的处理程序是一个简单的闭包还是说是控制器方法没有对应的路由外界都访问不到他们,今天我们就来看看Laravel是如何来设计和实现路由的。
KevinYan
2019/10/13
2.4K0
php 中的 DI 依赖注入
✨ 什么是 DI / 依赖注入 依赖注入DI 其实本质上是指对类的依赖通过构造器完成 自动注入 通俗来说,就是你当前操作一个类,但是这个类的某些方法或者功能不是单单只靠这个类就能完成的,而是要 借助另一个类 的才能完成的 最直接的标志就是传参数据为对象的时候。严格来说,你想在一个类中操作另一个类,这两个类之间形成了相互依赖关系,传参的方式叫 注入 ✨ 依赖注入出现的原因 在未使用依赖注入的时候,php 需要在一个类中使用另一个类的时候,往往都会进行如下操作 比如我在 container 类中需要用到 ada
江户川码农
2022/08/02
1.7K2
php 中的 DI 依赖注入
推荐阅读
相关推荐
PHP系列 | 依赖注入容器和服务定位器
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档