Laravel如何创建服务器提供者实例代码
程序员文章站
2024-01-07 14:58:46
前言
laravel服务器容器:是用于管理类依赖和执行依赖注入的工具。下面我们演示下如何创建服务器提供者,它是laravel的核心。话不多说了,来一起看看详细的介绍吧...
前言
laravel服务器容器:是用于管理类依赖和执行依赖注入的工具。下面我们演示下如何创建服务器提供者,它是laravel的核心。话不多说了,来一起看看详细的介绍吧
在app/contracts目录下创建testcontract.php文件,其内容为:
<?php namespace app\contracts; interface testcontract { public function callme($controller); }
在app/services目录下创建testservice.php文件,其内容为:
<?php namespace app\services; use app\contracts\testcontract; class testservice implements testcontract { public function callme($controller){ dd("call me from testserviceprovider in ".$controller); } }
在config/app.php文件中providers中添加内容,以便进行注册:
... app\providers\riakserviceprovider::class,
创建1个服务提供类:
php artisan make:provider riakserviceprovider
其内容为:
<?php namespace app\providers; use app\services\testservice; use illuminate\support\serviceprovider; class riakserviceprovider extends serviceprovider { /** * bootstrap the application services. * * @return void */ public function boot() { // } /** * register the application services. * * @return void */ public function register() { $this->app->bind("app\contracts\testcontract",function(){ return new testservice(); }); } }
在serviceprovider中提供了2个方法,其中register方法用于注册服务,而boot用于引导服务。
在控制器indxcontroller中添加如下内容:
<?php namespace app\http\controllers; use app; use illuminate\http\request; use app\contracts\testcontract; class indexcontroller extends controller { public function __construct(testcontract $test){ $this->test = $test; } public function index(){ $this->test->callme("indexcontroller"); } }
访问浏览器可以得到如下的结果:
"call me from testserviceprovider in indexcontroller"
另外,还可以使用app的make方法进行调用。
public function index(){ $test = app::make('test'); $test->callme('indexcontroller'); }
其结果也是一样的。
参考文章:
- https://laravelacademy.org/post/796.html
- https://laravelacademy.org/post/93.html
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。