国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 php框架 Laravel Laravel框架中服務(wù)提供者和門面模式(Facade)的用法(代碼)

Laravel框架中服務(wù)提供者和門面模式(Facade)的用法(代碼)

Jul 31, 2018 pm 06:00 PM
facades laravel php

laravel框架中自帶檔案系統(tǒng)的相關(guān)操作的使用是非常方便的,那麼這是如何實(shí)現(xiàn)的呢?接下來的這篇文章php中文網(wǎng)將給大家來詳細(xì)的說明一下這裡面的原理,話不多說,讓我們直接來看文章的內(nèi)容。

先來一個(gè)引子:

以Laravel 自帶的檔案系統(tǒng)為例,在config/app.php 的設(shè)定檔的providers 陣列中,註冊(cè)了一個(gè)服務(wù)提供者:

IlluminateFilesystemFilesystemServiceProvider::class,

在alias 陣列中定義了一個(gè)門面:

‘File’ => IlluminateSupportFacadesFile::class,

透過這兩個(gè)步驟,我們就可以非常方便的使用Laravel 提供的檔案系統(tǒng)相關(guān)的操作,而且呼叫形式很簡(jiǎn)潔,如:

File::exist($path),判斷檔案是否存在。

File::get($path, $lock = false),取得一個(gè)檔案的內(nèi)容。

File::append($path, $data),把內(nèi)容追加到一個(gè)檔案最後。

File::files($directory),取得一個(gè)目錄下所有檔案。

以下分別來說一說Laravel 的服務(wù)提供者和門面模式的內(nèi)容。

服務(wù)提供者

#先看看定義:

服務(wù)提供者是所有Laravel應(yīng)用程式啟動(dòng)的中心所在。包括你自己的應(yīng)用程序,以及所有的 Laravel 核心服務(wù),都是透過服務(wù)提供者啟動(dòng)的。

在檔案系統(tǒng)這個(gè)服務(wù)提供者中,位置/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemServiceProvider.php,register 方法可以看到綁定了一個(gè)單一範(fàn)例:

protected function registerNativeFilesystem()
{
    $this->app->singleton('files', function () {
        return new Filesystem;
    });
}

這個(gè)單例是Filesystem 這個(gè)類別的單例模式。當(dāng)然,這個(gè)服務(wù)提供者中也可以綁定其他的單例,或做更多的事情。我們這裡只研究 File::exist() 這種呼叫方式的原理。

那麼這樣一來就有個(gè) files 的單例,其實(shí)就是 Filesystem 這個(gè)類別的實(shí)例。

此時(shí),如果沒有Facade,也是可以呼叫到Filesystem 這個(gè)實(shí)例的方法的,那就是這樣呼叫:

app(‘files’)->exist($path)

好了,現(xiàn)在開始講Facade.

Facade 門面模式

Facades 為應(yīng)用程式的服務(wù)容器中可用的類別提供了一個(gè)「靜態(tài)」介面。 Laravel 自帶了許多的 facades,可以用來訪問其幾乎所有的服務(wù)。 Laravel facades 就是服務(wù)容器裡那些基類的「靜態(tài)代理」,相較於傳統(tǒng)的靜態(tài)方法調(diào)用,facades 在提供更簡(jiǎn)潔且豐富的語法的同時(shí),還有更好的可測(cè)試性和擴(kuò)展性。

本文一開始講到alias 陣列定義了一個(gè)File,具體的類別是

IlluminateSupportFacadesFile::class,

它的內(nèi)容是:

class File extends Facade
{
    /**
     * Get the registered name of the component.
     *
     * @return string
     */
    protected static function getFacadeAccessor()
    {
        return 'files';
    }
}

它實(shí)際上回傳了一個(gè)名稱,注意這個(gè)名稱files,不就是剛剛綁定的單例模式的名稱嗎?沒錯(cuò)。

這樣一來,就可以使用 File 這個(gè)別名或說門面,來呼叫這個(gè) Filesystem 實(shí)例中的方法了。

透過本文,希望大家能夠了解服務(wù)提供者,F(xiàn)acade,和實(shí)際呼叫的類別的實(shí)例之間的關(guān)係。

以上就是本篇文章的全部?jī)?nèi)容了,更多l(xiāng)aravel內(nèi)容請(qǐng)關(guān)注laravel框架入門教學(xué)。

相關(guān)文章推薦:

Laravel框架中輔助函數(shù):optional ()函數(shù)的介紹

Laravel5 .5新特性:preset指令的解析

相關(guān)課程推薦:

2017年最新的五個(gè)Laravel影片教學(xué)推薦

以上是Laravel框架中服務(wù)提供者和門面模式(Facade)的用法(代碼)的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

在C中使用std :: Chrono 在C中使用std :: Chrono Jul 15, 2025 am 01:30 AM

std::chrono在C 中用於處理時(shí)間,包括獲取當(dāng)前時(shí)間、測(cè)量執(zhí)行時(shí)間、操作時(shí)間點(diǎn)與持續(xù)時(shí)間及格式化解析時(shí)間。 1.獲取當(dāng)前時(shí)間使用std::chrono::system_clock::now(),可轉(zhuǎn)換為可讀字符串但係統(tǒng)時(shí)鐘可能不單調(diào);2.測(cè)量執(zhí)行時(shí)間應(yīng)使用std::chrono::steady_clock以確保單調(diào)性,並通過duration_cast轉(zhuǎn)換為毫秒、秒等單位;3.時(shí)間點(diǎn)(time_point)和持續(xù)時(shí)間(duration)可相互操作,但需注意單位兼容性和時(shí)鐘紀(jì)元(epoch)

PHP如何處理環(huán)境變量? PHP如何處理環(huán)境變量? Jul 14, 2025 am 03:01 AM

toAccessenvironmentVariablesInphp,useGetenv()或$ _envsuperglobal.1.getEnv('var_name')retievesSpecificvariable.2。 $ _ en v ['var_name'] accessesvariablesifvariables_orderInphp.iniincludes“ e” .setVariablesViaCliWithvar = vualitephpscript.php,inapach

為什麼我們?cè)u(píng)論:PHP指南 為什麼我們?cè)u(píng)論:PHP指南 Jul 15, 2025 am 02:48 AM

PHPhasthreecommentstyles://,#forsingle-lineand/.../formulti-line.Usecommentstoexplainwhycodeexists,notwhatitdoes.MarkTODO/FIXMEitemsanddisablecodetemporarilyduringdebugging.Avoidover-commentingsimplelogic.Writeconcise,grammaticallycorrectcommentsandu

如何在Windows上安裝PHP 如何在Windows上安裝PHP Jul 15, 2025 am 02:46 AM

安裝PHP在Windows上的關(guān)鍵步驟包括:1.下載合適的PHP版本並解壓,推薦使用ThreadSafe版本配合Apache或NonThreadSafe版本配合Nginx;2.配置php.ini文件,將php.ini-development或php.ini-production重命名為php.ini;3.將PHP路徑添加到系統(tǒng)環(huán)境變量Path中以便命令行使用;4.測(cè)試PHP是否安裝成功,通過命令行執(zhí)行php-v和運(yùn)行內(nèi)置服務(wù)器測(cè)試解析能力;5.若使用Apache,需在httpd.conf中配置P

PHP語法:基礎(chǔ)知識(shí) PHP語法:基礎(chǔ)知識(shí) Jul 15, 2025 am 02:46 AM

PHP的基礎(chǔ)語法包括四個(gè)關(guān)鍵點(diǎn):1.PHP標(biāo)籤必須使用結(jié)束,推薦使用完整標(biāo)籤;2.輸出內(nèi)容常用echo和print,其中echo支持多參數(shù)且效率更高;3.註釋方式有//、#和//,用於提升代碼可讀性;4.每條語句必須以分號(hào)結(jié)尾,空格和換行不影響執(zhí)行但影響可讀性。掌握這些基本規(guī)則有助於寫出清晰穩(wěn)定的PHP代碼。

了解Laravel Breeze和Jetstream之間的差異。 了解Laravel Breeze和Jetstream之間的差異。 Jul 15, 2025 am 12:43 AM

LaravelBreeze和Jetstream的主要區(qū)別在於定位和功能。 1.核心定位上,Breeze是輕量級(jí)認(rèn)證腳手架,適合小型項(xiàng)目或自定義前端需求;Jetstream提供完整用戶系統(tǒng),包含團(tuán)隊(duì)管理、個(gè)人資料設(shè)置、API支持及雙因素驗(yàn)證等功能,適合中大型應(yīng)用。 2.前端技術(shù)棧方面,Breeze默認(rèn)使用Blade Tailwind,偏向傳統(tǒng)服務(wù)端渲染;Jetstream支持Livewire或Inertia.js(結(jié)合Vue/React),更適合現(xiàn)代SPA架構(gòu)。 3.安裝與定制上,Breeze更簡(jiǎn)單易用

Microsoft Edge搜索建議關(guān)閉 Microsoft Edge搜索建議關(guān)閉 Jul 15, 2025 am 12:51 AM

1.關(guān)閉Edge搜索建議:進(jìn)入設(shè)置>隱私、搜索和服務(wù)>地址欄和搜索,關(guān)閉顯示搜索建議;2.關(guān)閉其他推薦內(nèi)容:關(guān)閉使用搜索框獲取快捷方式及新標(biāo)籤頁興趣內(nèi)容;3.清除歷史數(shù)據(jù):刪除瀏覽記錄與Cookie。通過以上步驟可有效阻止Edge自動(dòng)彈出搜索建議並提升隱私保護(hù)。

python如果還有示例 python如果還有示例 Jul 15, 2025 am 02:55 AM

寫Python的ifelse語句關(guān)鍵在於理解邏輯結(jié)構(gòu)與細(xì)節(jié)。 1.基礎(chǔ)結(jié)構(gòu)是if條件成立執(zhí)行一段代碼,否則執(zhí)行else部分,else可選;2.多條件判斷用elif實(shí)現(xiàn),順序執(zhí)行且一旦滿足即停止;3.嵌套if用於進(jìn)一步細(xì)分判斷,建議不超過兩層;4.簡(jiǎn)潔場(chǎng)景可用三元表達(dá)式替代簡(jiǎn)單ifelse。注意縮進(jìn)、條件順序及邏輯完整性,才能寫出清晰穩(wěn)定的判斷代碼。

See all articles