在搞新浪SAE的時候,把Lumen裝上,須要實現Memcahce和Storage的實現,就用到了Lumen的服務提供者,看了下官方文檔和查閱了一些資料,記錄一下。(本文在Lumen中實現,Laravel中實現幾乎差很少)php
一、app\Http\文件夾下面新建Models文件夾,在Models文件夾下面新建Example.php文件,將app\Http\Models加入到composer.json文件中的autoload類自動加載laravel
"autoload": { "psr-4": { "App\\": "app/", "App\\Http\\Models\\": "app/Http/Models/" } },
Example.php文件建立一個example類json
<?php /* * example演示類 */ namespace App\Http\Models; class Example extends \Illuminate\Database\Eloquent\Model { public function sayHello() { echo "hello,this is a model say"; } }
二、app\Providers\文件夾中建立一個服務提供者ExampleServiceProvider.php。並註冊Models中的example類bootstrap
<?php /** * Example服務提供者 */ namespace App\Providers; use Illuminate\Support\ServiceProvider; use App\Http\Models\Example; class ExampleServiceProvider extends ServiceProvider { /** * 在容器中註冊綁定. * * @return void */ public function register() { $this->app->singleton('App\Http\Models\Example', function($app) { return new Example($app); }); } }
三、將Example服務提供者加入啓動,在bootstrap\app.php中加入瀏覽器
$app->register(App\Providers\ExampleServiceProvider::class);
完成以上操做咱們的Example服務提供者已經添加好了,並啓用,下面就來使用它app
四、在Controller中使用它
composer
爲了測試,咱們建立了一個路由爲example,controller爲ExampleController.php文件ide
<?php /** * Example實例Controller */ namespace App\Http\Controllers; use App\Http\Models\Example; class ExampleController extends Controller { public function __construct(Example $example) { $this->example= $example; } public function index() { $this->example->sayHello(); }
五、瀏覽器中執行路由,應該看到輸出了以下內容:測試
hello,this is a model say
小結:this
一、Laravel的服務提供者爲你添加各類擴展很方便,也是核心東西。感受就像添加Yii的組件同樣,爲你擴展各類功能,其實很方便的。Laravel的服務提供者實際上是一個很複雜的東西,這裏只是一個簡單的實例,更多的東西仍是要看官方給出的文檔及實例。
二、Laravel的擴展開發,也是經過服務提供者啓動的,好比:
Cache::extend('mongo', function($app){ return Cache::repository(new MongoStore); });
如下爲中文翻譯官方文檔原話:
Cache::extend 的調用能夠在新的 Laravel 應用程序默認附帶的App\Providers\AppServiceProvider 的 boot 方法中完成,或者你能夠創建本身的服務提供者來放置這個擴展
參考文檔: