Laravel5(Lumen)建立服務提供者Service Providers

在搞新浪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 方法中完成,或者你能夠創建本身的服務提供者來放置這個擴展


參考文檔:

一、http://www.golaravel.com/laravel/docs/5.0/providers/

二、https://laravel.com/docs/5.2/providers

相關文章
相關標籤/搜索