99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

架構(gòu) ―― 門面

2018-02-24 15:38 更新

架構(gòu) —— 門面(Facades)

1、簡介

門面為應(yīng)用的服務(wù)容器中的有效類提供了一個“靜態(tài)”接口。Laravel附帶了很多門面,你可能在不知道的情況下正在使用它們。Laravel的門面作為服務(wù)容器中的底層類的“靜態(tài)代理”,相比于傳統(tǒng)靜態(tài)方法,在維護(hù)時能夠提供更加易于測試、更加靈活的、簡明且富有表現(xiàn)力的語法。

2、使用門面

在Laravel應(yīng)用的上下文中,門面就是一個提供訪問容器中對象的類。該機制原理由Facade類實現(xiàn),Laravel自帶的門面,以及創(chuàng)建的自定義門面,都會繼承自Illuminate\Support\Facades\Facade基類。

門面類只需要實現(xiàn)一個方法:getFacadeAccessor。正是getFacadeAccessor方法定義了從容器中解析什么,然后Facade基類使用魔術(shù)方法從你的門面中調(diào)用解析對象。

下面的例子中,我們將會調(diào)用Laravel的緩存系統(tǒng),瀏覽代碼后,也許你會覺得我們調(diào)用了Cache的靜態(tài)方法get

<?php

namespace App\Http\Controllers;

use Cache;
use App\Http\Controllers\Controller;

class UserController extends Controller{
    /**
     * 為指定用戶顯示屬性
     *
     * @param  int  $id
     * @return Response
     */
    public function showProfile($id)
    {
        $user = Cache::get('user:'.$id);

        return view('profile', ['user' => $user]);
    }
}

注意我們在頂部位置引入了Cache門面。該門面作為代理訪問底層Illuminate\Contracts\Cache\Factory接口的實現(xiàn)。我們對門面的所有調(diào)用都會被傳遞給Laravel緩存服務(wù)的底層實例。

如果我們查看Illuminate\Support\Facades\Cache類的源碼,將會發(fā)現(xiàn)其中并沒有靜態(tài)方法get

class Cache extends Facade{
    /**
     * 獲取組件注冊名稱
     *
     * @return string
     */
    protected static function getFacadeAccessor() { 
        return 'cache'; 
    }
}

Cache門面繼承Facade基類并定義了getFacadeAccessor方法,該方法的工作就是返回服務(wù)容器綁定類的別名,當(dāng)用戶引用Cache類的任何靜態(tài)方法時,Laravel從服務(wù)容器中解析cache綁定,然后在解析出的對象上調(diào)用所有請求方法(本例中是get)。

擴展閱讀:實例教程 —— 創(chuàng)建自定義Facades類

3、門面類列表

下面列出了每個門面及其對應(yīng)的底層類,這對深入給定根門面的API文檔而言是個很有用的工具。服務(wù)容器綁定鍵也被包含進(jìn)來:

門面 服務(wù)容器綁定別名
App Illuminate\Foundation\Application app
Artisan Illuminate\Console\Application artisan
Auth Illuminate\Auth\AuthManager auth
Auth (Instance) Illuminate\Auth\Guard
Blade Illuminate\View\Compilers\BladeCompiler blade.compiler
Bus Illuminate\Contracts\Bus\Dispatcher
Cache Illuminate\Cache\Repository cache
Config Illuminate\Config\Repository config
Cookie Illuminate\Cookie\CookieJar cookie
Crypt Illuminate\Encryption\Encrypter encrypter
DB Illuminate\Database\DatabaseManager db
DB (Instance) Illuminate\Database\Connection
Event Illuminate\Events\Dispatcher events
File Illuminate\Filesystem\Filesystem files
Hash Illuminate\Contracts\Hashing\Hasher hash
Input Illuminate\Http\Request request
Lang Illuminate\Translation\Translator translator
Log Illuminate\Log\Writer log
Mail Illuminate\Mail\Mailer mailer
Password Illuminate\Auth\Passwords\PasswordBroker auth.password
Queue Illuminate\Queue\QueueManager queue
Queue (Instance) Illuminate\Queue\QueueInterface
Queue (Base Class) Illuminate\Queue\Queue
Redirect Illuminate\Routing\Redirector redirect
Redis Illuminate\Redis\Database redis
Request Illuminate\Http\Request request
Response Illuminate\Contracts\Routing\ResponseFactory
Route Illuminate\Routing\Router router
Schema Illuminate\Database\Schema\Blueprint
Session Illuminate\Session\SessionManager session
Session (Instance) Illuminate\Session\Store
Storage Illuminate\Contracts\Filesystem\Factory filesystem
URL Illuminate\Routing\UrlGenerator url
Validator Illuminate\Validation\Factory validator
Validator (Instance) Illuminate\Validation\Validator
View Illuminate\View\Factory view
View (Instance) Illuminate\View\View
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號