Laravel Ioc容器singleton和bind方法的区别
Laravel中使用Ioc容器的singleton方法和bind方法创建实例有什么区别呢?它们两个都是返回一个类的实例,不同的是singleton是单例模式,而bind是每次返回一个新的实例,看下面的两个例子。
1.Ioc容器bind方法
<?phprequire __DIR__.'/../bootstrap/autoload.php';class tanteng
{public $name;
}$container = new Illuminate\Container\Container();$container->bind('tanteng');$instance = $container->make('tanteng');
$instance->name = 'tanteng';$instance2 = $container->make('tanteng');
$instance2->name = 'tuntun';echo $instance->name.' '.$instance2->name;
输出的结果:
tanteng tuntun
结论:
通过bind方法创建实例不是单例模式,而是创建新的实例。
2.Ioc容器singleton方法
<?phprequire __DIR__.'/../bootstrap/autoload.php';class single
{public $value;
}$container = new Illuminate\Container\Container();$container->singleton('single');
$instance3 = $container->make('single');
$instance4 = $container->make('single');$instance3->value = 'aaaa';
$instance4->value = 'bbbb';echo $instance3->value.' '.$instance4->value;
输出结果:
bbbb bbbb
结论:
使用singleton创建实例使用的是单例模式,每次返回同一个实例。
以上代码可以放在public下,如test.php运行。
再看框架底层代码:
public function singleton($abstract, $concrete = null)
{$this->bind($abstract, $concrete, true);
}
发现singleton方法其实也是调用bind方法,只是最后一个参数是true,表示单例模式。框架源代码:Illuminate/Container/Container.php
Laravel Ioc容器singleton和bind方法的区别相关推荐
- jquery on()方法和bind()方法的区别
bind是直接绑定在一个对象上. $('.btn').bind('click', function() {alert('User clicked'); }); 参数 描述 event 必需.规定添加到 ...
- laravel中delete()方法和destroy()方法的区别
delete()方法是实例方法,需要查询到相应的数据并通过模型实例调用. destroy()方法可以直接调用,通过索引删除记录. 举个例子: /delete()方法删除/ //先查找记录 b l o ...
- [Spring 深度解析]第6章 Spring的IoC容器系列
6. Spring的IoC容器系列 IoC容器为开发者管理对象之间的依赖关系提供了很多便利和基础服务.有许多IoC容器供开发者选择,SpringFramework的IoC核心就是其中一个,它是开源 ...
- 【Spring】IoC容器系列的设计与实现:BeanFactory和ApplicationContext
在Spring IoC容器的设计中,我们可以看到两个主要的容器系列,一个是实现BeanFactory接口的简单容器系列,这系列容器只实现了容器的最基本功能,另一个是ApplicationContext ...
- Spring5框架-IOC容器
Spring5框架 Spring包下载快照 一.Spring简绍 1什么是Spring 1.Spring是轻量级的开源的JAVAEE框架,可以解决企业应用开发的复杂性 2.Spring有两个核心的部分 ...
- spring的IOC容器
文章目录 1. IOC.IOC容器.Bean.DI 2. 核心概念小结 3,入门案例 3.1 IOC入门案例 3.1.1 入门案例思路分析 3.1.2 入门案例代码实现 步骤1:创建Maven项目 步 ...
- Spring源码分析——IOC容器
1.IOC容器的概念 理解IOC容器的概念之前首先需要了解依赖翻转(又称依赖倒置)的概念 许多复杂的应用都是通过多个类之间的彼此合作实现业务逻辑的,这使得每个对象都需要管理自己与其合作对象的依赖,而如 ...
- IOC容器加载过程及Bean的生命周期和后置处理器
SpringIOC 容器加载过程 第一步:实例化化容器:AnnotationConfigApplicationContext @Configuration @ComponentScan("c ...
- 02.IOC容器加载过程及Bean的生命周期和后置处理器
Spring思维导图 SpringBean加载流程 SpringIOC加载过程-invokeBeanFactoryPostProcessors SpringIOC 容器加载过程 第一步:实例化化容器: ...
最新文章
- [NOIP2016] 组合数问题
- 窗口截图(可指定HWND窗口句柄)
- 【计算机网络】网络安全 : 报文鉴别 ( 密码散列函数 | 报文摘要算法 MD5 | 安全散列算法 SHA-1 | MAC 报文鉴别码 )
- 基于hi-nginx的web开发(python篇)——utf-8编码
- java 无法注入service_SpringBoot集成shiro,MyRealm中无法@Autowired注入Service的问题
- 有没有一段代码,让你觉得人类的智慧也可以璀璨无比?【转】
- 使用windows远程桌面连接ubuntu
- 耗费两小时整理电子入行学习资源
- OMRON-FINS(TCP)协议详细解析和攻击
- 2021SC@SDUSC Zxing开源代码(十二)Aztec二维码(一)
- word excel如何用印章生成器软件在线制作电子印章 电子公章图片
- Windows10一句话从administrator权限提升到system权限
- IDEA 2018.3版本Spring Boot 热部署
- Axure 初学者必看:自学 Axure 需要花多长时间?
- Python_argparse.Argumentparser()
- 增加 swap 空间
- 【组合数学】通俗解释 Burnside引理和Polya定理
- rcwa matlab,rcwa-1d_4_6_2014 1维严格耦合波分析matlab程序 适用于一维光栅 可计算多层结构 256万源代码下载- www.pudn.com...
- 快钱 大数据改变第三方支付
- 食品卡路里是如何计算出来的?