这篇文章主要介绍laravel中的合同,ServiceContainer, ServiceProvider,门面关系是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
<代码>合同代码>,<代码> ServiceContainer 代码>,<代码> ServiceProvider 代码>,<代码>外墙代码>
1。代码> <代码>合同合同,契约,也就是接口,定义一些规则,每个实现此接口的都要实现里面的方法;
2。<代码> ServiceContainer> 代码,实现<代码>合同> 代码,具体的逻辑实现;
3。<代码> ServiceProvider 代码>,<代码> serviceContainer> 代码的服务提供者,返回<代码> serviceContainer> 代码的实例化,供其他地方使用,可以把它加入到<代码>应用程序/配置代码>的<代码>提供者代码>中,会被自动注册到容器中,
4。<代码>外观> 代码,简化<代码> ServiceProvider> 代码的调用方式,而且可以静态调用<代码> ServiceContainer> 代码中的方法;
<强>实现强>
<代码> 代码>合同接口可以写或不写,这里就不定义了。
定义一个<代码> ServiceContainer> 代码,实现具体的功能
namespace 应用\助手; class MyFoo { ,,,public function 添加(一个美元,,b) ,,,{ ,,,,,,,return a + b美元; ,,,} }
定义一个<代码> ServiceProvider> 代码供其他地方使用<代码> ServiceContain 代码>
& lt; php ? namespace 应用\提供商; use 应用\助手\ MyFoo,//要服务的容器 use 阐明\ \ ServiceProvider的支持; use 应用; class MyFooServiceProvider  extends ServiceProvider { ,,,public function 引导(){} ,,,//注册到容器中 ,,,public function 注册() ,,,{ ,,,,,,,//可以这么绑定,这需要use 应用; ,,,,,,,的应用:绑定(“myfoo",函数(){ ,,,,,,,,,,,return new MyFoo (); ,,,,,,,}); ,,,,,,,//也可以这么绑定 ,,,,,,,这个美元→程序→绑定(“myfoo",,函数(){ ,,,,,,,,,,,return new MyFoo (); ,,,,,,,}); ,,,} }
在<代码> app/config。php代码>中的<代码>供应商> 代码数组中加入<代码> ServiceProvider> 代码,让系统自动注册
<代码>应用\ \供应商MyFooServiceProvider::类代码>,
这时候就可以使用了,假设在控制器中使用
public function 两个($ id=null) { ,,,//从系统容器中获取实例化对象 ,,,myfoo 美元;=,应用:使(“myfoo"); ,,,echo 美元myfoo→添加(1、2); }
这样太麻烦,还需要用<代码>让> 代码来获取对象,为了简便,就可以使用门面功能,定义门面<代码> MyFooFacade 代码>
namespace 应用\外墙; use 阐明\ \外墙\正面的支持; class MyFooFacade  extends 外观 { ,,,protected static function getFacadeAccessor () ,,,{ ,,,,,,,//这里返回的是ServiceProvider中注册时,定义的字符串 ,,,,,,,return & # 39; myfoo& # 39;; ,,,} }
在控制器里就可以直接调用了
use 应用\外墙\ MyFooFacade; public function 两个($ id=null) { ,,,//从系统容器中获取实例化对象 ,,,myfoo 美元;=,应用:使(“myfoo"); ,,,echo 美元myfoo→添加(1、2); ,,,//使用门面 ,,,echo MyFooFacade:添加(4、5); }
以上是“laravel中的合同,ServiceContainer, ServiceProvider,门面关系是什么”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!