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方法的区别相关推荐

  1. jquery on()方法和bind()方法的区别

    bind是直接绑定在一个对象上. $('.btn').bind('click', function() {alert('User clicked'); }); 参数 描述 event 必需.规定添加到 ...

  2. laravel中delete()方法和destroy()方法的区别

    delete()方法是实例方法,需要查询到相应的数据并通过模型实例调用. destroy()方法可以直接调用,通过索引删除记录. 举个例子: /delete()方法删除/ //先查找记录 b l o ...

  3. [Spring 深度解析]第6章 Spring的IoC容器系列

    6. Spring的IoC容器系列 ​ IoC容器为开发者管理对象之间的依赖关系提供了很多便利和基础服务.有许多IoC容器供开发者选择,SpringFramework的IoC核心就是其中一个,它是开源 ...

  4. 【Spring】IoC容器系列的设计与实现:BeanFactory和ApplicationContext

    在Spring IoC容器的设计中,我们可以看到两个主要的容器系列,一个是实现BeanFactory接口的简单容器系列,这系列容器只实现了容器的最基本功能,另一个是ApplicationContext ...

  5. Spring5框架-IOC容器

    Spring5框架 Spring包下载快照 一.Spring简绍 1什么是Spring 1.Spring是轻量级的开源的JAVAEE框架,可以解决企业应用开发的复杂性 2.Spring有两个核心的部分 ...

  6. spring的IOC容器

    文章目录 1. IOC.IOC容器.Bean.DI 2. 核心概念小结 3,入门案例 3.1 IOC入门案例 3.1.1 入门案例思路分析 3.1.2 入门案例代码实现 步骤1:创建Maven项目 步 ...

  7. Spring源码分析——IOC容器

    1.IOC容器的概念 理解IOC容器的概念之前首先需要了解依赖翻转(又称依赖倒置)的概念 许多复杂的应用都是通过多个类之间的彼此合作实现业务逻辑的,这使得每个对象都需要管理自己与其合作对象的依赖,而如 ...

  8. IOC容器加载过程及Bean的生命周期和后置处理器

    SpringIOC 容器加载过程 第一步:实例化化容器:AnnotationConfigApplicationContext @Configuration @ComponentScan("c ...

  9. 02.IOC容器加载过程及Bean的生命周期和后置处理器

    Spring思维导图 SpringBean加载流程 SpringIOC加载过程-invokeBeanFactoryPostProcessors SpringIOC 容器加载过程 第一步:实例化化容器: ...

最新文章

  1. [NOIP2016] 组合数问题
  2. 窗口截图(可指定HWND窗口句柄)
  3. 【计算机网络】网络安全 : 报文鉴别 ( 密码散列函数 | 报文摘要算法 MD5 | 安全散列算法 SHA-1 | MAC 报文鉴别码 )
  4. 基于hi-nginx的web开发(python篇)——utf-8编码
  5. java 无法注入service_SpringBoot集成shiro,MyRealm中无法@Autowired注入Service的问题
  6. 有没有一段代码,让你觉得人类的智慧也可以璀璨无比?【转】
  7. 使用windows远程桌面连接ubuntu
  8. 耗费两小时整理电子入行学习资源
  9. OMRON-FINS(TCP)协议详细解析和攻击
  10. 2021SC@SDUSC Zxing开源代码(十二)Aztec二维码(一)
  11. word excel如何用印章生成器软件在线制作电子印章 电子公章图片
  12. Windows10一句话从administrator权限提升到system权限
  13. IDEA 2018.3版本Spring Boot 热部署
  14. Axure 初学者必看:自学 Axure 需要花多长时间?
  15. Python_argparse.Argumentparser()
  16. 增加 swap 空间
  17. 【组合数学】通俗解释 Burnside引理和Polya定理
  18. rcwa matlab,rcwa-1d_4_6_2014 1维严格耦合波分析matlab程序 适用于一维光栅 可计算多层结构 256万源代码下载- www.pudn.com...
  19. 快钱 大数据改变第三方支付
  20. 食品卡路里是如何计算出来的?

热门文章

  1. 剑指offer 算法 (举例让抽象具体化)
  2. 哪些书你看之前以为很枯燥,结果一看却欲罢不能的?
  3. 文本读取写入易错问题
  4. ubuntu apache2配置详解(含虚拟主机配置方法)
  5. 关于“做一个聊天+信息分享客户端”的设想(SNS?)
  6. Asp.net服务器端控件CheckBoxList的使用心得
  7. DEBIAN vim的语法高亮和自动縮进
  8. ICCV2013-Hybrid Deep Learning for Face Verification
  9. 从 OSS 装载数据到 PostgreSQL
  10. 涉及的一些操作的命令