Laravel能够自动注入需要的依赖,对于自定义的类和接口是有些不同的。
对于类,Laravel可以自动注入,但是接口的话需要创建相应的ServiceProvider注册接口和实现类的绑定,同时需要将ServiceProvider添加到congif/app.php的providers数组中,这样容器就能知道你需要注入哪个实现。
现在自定义一个类myClass
namespace App\library;
class myClass { public function show() { echo __FUNCTION__.' Hello World'; } }
设置route
Route::get('test/ioc', 'TestController@index');
修改TestController
class TestController extends Controller { public function index(myClass $myClass) { $myClass->show(); } }
访问http://localhost/test/ioc,能成功打印show Hello World。
修改myClass
class myClass implements like { public function play() { // TODO: Implement play() method. echo __FUNCTION__.' Hello Play'; } }
like接口
interface like { public function play(); }
TestController
class TestController extends Controller { public function index(like $like) { $like->play(); } }
如果还是访问上面的地址,会提示错误
Target [App\library\like] is not instantiable.
对于接口注入,我们需要在对应的ServiceProvider的register方法中注册,并将对应的ServiceProvider写入config/app的providers数组中。
定义LikeServiceProvider
class LikeServiceProvider extends ServiceProvider { public function boot() { // } public function register() { // $this->app->bind('App\library\like', 'App\library\myClass'); } }
之后我们需要将LikeServiceProvider添加到config\app.php文件的providers数组中。
还是继续访问上述的地址,页面成功输出play Hello Play。
以上这篇Laravel 类和接口注入相关的代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
Laravel,类,接口,注入
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。