溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Laravel5.7目錄結(jié)構(gòu)

發(fā)布時(shí)間:2020-05-26 03:00:09 來(lái)源:網(wǎng)絡(luò) 閱讀:734 作者:wz669 欄目:web開(kāi)發(fā)

Laravel項(xiàng)目目錄

默認(rèn)將 Eloquent 的模型直接放置到 app 目錄下,開(kāi)發(fā)者可以自行選擇放置的位置。
對(duì)于國(guó)內(nèi)開(kāi)發(fā)者,尤其是 PHP,models 目錄(app/Models)用于存放與數(shù)據(jù)庫(kù)交互的模型類(lèi),而業(yè)務(wù)邏輯應(yīng)該放到 services 這種目錄之下。

1.App目錄

app 目錄包含了應(yīng)用的核心代碼,你為應(yīng)用編寫(xiě)的代碼絕大多數(shù)也會(huì)放到這里;
你基于 Composer 做了 PHP 組件化開(kāi)發(fā)的話(huà),這里只有一些入口性的代碼;
(框架的核心代碼在 /vendor/laravel/framework 里面)

2.Config目錄

config 目錄包含了應(yīng)用所有的配置文件,建議通讀一遍這些配置文件以便熟悉 Laravel 所有默認(rèn)配置項(xiàng);

3.Public目錄

public 目錄包含了應(yīng)用入口文件 index.php 和前端資源文件(圖片、JavaScript、CSS等);
該目錄也是 Apache 或 Nginx 等 Web 服務(wù)器所指向的應(yīng)用根目錄,這樣做的好處是隔離了應(yīng)用核心文件直接暴露于 Web 根目錄之下

4.Resources目錄

resources 目錄包含了應(yīng)用視圖文件和未編譯的原生前端資源文件(LESS、SASS、JavaScript),以及本地化語(yǔ)言文件;

5.Routes目錄

routes 目錄包含了應(yīng)用定義的所有路由。Laravel 默認(rèn)提供了四個(gè)路由文件用于給不同的入口使用:web.php、api.php、 console.php 和 channels.php。

5.1web.php

文件包含的路由通過(guò) RouteServiceProvider 引入,都被約束在 web 中間件組中,因而支持 Session、CSRF 保護(hù)以及 Cookie 加密功能,如果應(yīng)用無(wú)需提供無(wú)狀態(tài)的、RESTful 風(fēng)格的 API,那么路由基本上都要定義在 web.php 文件中。

5.2api.php

文件包含的路由通過(guò) RouteServiceProvider 引入,都被約束在 api 中間件組中,因而支持頻率限制功能,這些路由是無(wú)狀態(tài)的,所以請(qǐng)求通過(guò)這些路由進(jìn)入應(yīng)用需要通過(guò) token 進(jìn)行認(rèn)證并且不能訪(fǎng)問(wèn) Session 狀態(tài)。

5.3console.php

文件用于定義所有基于閉包的控制臺(tái)命令,每個(gè)閉包都被綁定到一個(gè)控制臺(tái)命令并且允許與命令行 IO 方法進(jìn)行交互,盡管這個(gè)文件并不定義 HTTP 路由,但是它定義了基于控制臺(tái)的應(yīng)用入口(路由)。

5.4channels.php

文件用于注冊(cè)應(yīng)用支持的所有事件廣播頻道。

6.Storage目錄

storage 目錄包含了編譯后的 Blade 模板、基于文件的 Session、文件緩存,以及其它由框架生成的文件,該目錄被細(xì)分為成 app、framework 和 logs 子目錄;
app 目錄用于存放應(yīng)用生成的文件,
framework 目錄用于存放框架生成的文件和緩存,
logs 目錄存放的是應(yīng)用的日志文件。
storage/app/public 目錄用于存儲(chǔ)用戶(hù)生成的文件,比如可以被公開(kāi)訪(fǎng)問(wèn)的用戶(hù)頭像,要達(dá)到被 Web 用戶(hù)訪(fǎng)問(wèn)的目的,你還需要在 public (應(yīng)用根目錄下的 public 目錄)目錄下生成一個(gè)軟連接 storage 指向這個(gè)目錄。你可以通過(guò) php artisan storage:link 命令生成這個(gè)軟鏈接。

7.Database目錄

database 目錄包含了數(shù)據(jù)庫(kù)遷移文件及填充文件,如果有使用 SQLite 的話(huà),你還可以將其作為 SQLite 數(shù)據(jù)庫(kù)存放目錄;

8.Bootstrap目錄

bootstrap 目錄包含了少許文件,用于框架的啟動(dòng)和自動(dòng)載入配置,還有一個(gè) cache 文件夾,里面包含了框架為提升性能所生成的文件,如路由和服務(wù)緩存文件;

9.Tests目錄

tests 目錄包含自動(dòng)化測(cè)試文件,其中默認(rèn)已經(jīng)提供了一個(gè)開(kāi)箱即用的PHPUnit 示例;每一個(gè)測(cè)試類(lèi)都要以 Test 開(kāi)頭,你可以通過(guò) phpunit 或 php vendor/bin/phpunit 命令來(lái)運(yùn)行測(cè)試。

10.Vendor目錄

vendor 目錄包含了應(yīng)用所有通過(guò) Composer 加載的依賴(lài)。


App目錄

應(yīng)用的核心代碼位于 app 目錄下,默認(rèn)情況下,該目錄位于命名空間 App 下, 并且被 Composer 通過(guò) PSR-4 自動(dòng)載入標(biāo)準(zhǔn) 自動(dòng)加載。

app 目錄下包含多個(gè)子目錄,如 Console、Http、Providers等。
Console 和 Http 目錄提供了進(jìn)入應(yīng)用核心的 API,
HTTP 協(xié)議和 CLI 是和應(yīng)用進(jìn)行交互的兩種機(jī)制,但實(shí)際上并不包含應(yīng)用邏輯。換句話(huà)說(shuō),它們只是兩個(gè)向應(yīng)用發(fā)送命令的方式。
Console 目錄包含了所有開(kāi)發(fā)者編寫(xiě)的 Artisan 命令,
Http 目錄包含了控制器、中間件和請(qǐng)求等。
其他目錄會(huì)在你通過(guò) Artisan 命令 make 生成相應(yīng)類(lèi)的時(shí)候自動(dòng)生成到 app 目錄下。
例如,app/Jobs 目錄直到你執(zhí)行 make:job 命令生成任務(wù)類(lèi)時(shí)才會(huì)出現(xiàn)在 app 目錄下。

注:app 目錄中的很多類(lèi)都可以通過(guò) Artisan 命令生成,要查看所有有效的命令,可以在終端中運(yùn)行 php artisan list make 命令。

Broadcasting目錄 make:channel

Broadcasting 目錄包含了應(yīng)用所需的所有廣播頻道類(lèi),這些類(lèi)通過(guò) make:channel 命令生成。該目錄默認(rèn)不存在,但是當(dāng)你通過(guò)命令第一次創(chuàng)建頻道類(lèi)時(shí)會(huì)自動(dòng)生成。想要了解更多關(guān)于頻道的信息,可以查看事件廣播文檔。

Console目錄 make:command

Console 目錄包含應(yīng)用所有自定義的 Artisan 命令,這些命令類(lèi)可以使用 make:command 命令生成。該目錄下還有 Console/Kernel 類(lèi),在這里可以注冊(cè)自定義的 Artisan 命令以及定義調(diào)度任務(wù)。

Events目錄 event:generate 和 make:event

這個(gè)目錄默認(rèn)不存在,但是可以通過(guò) event:generate 和 make:event 命令創(chuàng)建。該目錄用于存放事件類(lèi)。事件類(lèi)用于告知應(yīng)用其他部分某個(gè)事件發(fā)生情況并提供靈活的、解耦的處理機(jī)制。

Exceptions目錄

Exceptions 目錄包含應(yīng)用的異常處理器,同時(shí)還是處理應(yīng)用拋出的任何異常的好地方。如果你想要自定義異常如何記錄或渲染,需要編輯該目錄下的 Handler 類(lèi)。

Http目錄

Http 目錄包含了控制器、中間件以及表單請(qǐng)求等,幾乎所有通過(guò) Web 進(jìn)入應(yīng)用的請(qǐng)求處理都在這里進(jìn)行。

Jobs目錄 make:job

該目錄默認(rèn)不存在,可以通過(guò)執(zhí)行 make:job 命令生成,Jobs 目錄用于存放隊(duì)列任務(wù),應(yīng)用中的任務(wù)可以被推送到隊(duì)列,也可以在當(dāng)前請(qǐng)求生命周期內(nèi)同步執(zhí)行。同步執(zhí)行的任務(wù)有時(shí)也被看作命令,因?yàn)樗鼈儗?shí)現(xiàn)了命令模式。

Listeners目錄 event:generate 和 make:listener

這個(gè)目錄默認(rèn)不存在,可以通過(guò)執(zhí)行 event:generate 和 make:listener 命令創(chuàng)建。Listeners 目錄包含處理事件的類(lèi)(事件監(jiān)聽(tīng)器),事件監(jiān)聽(tīng)器接收一個(gè)事件并提供對(duì)該事件發(fā)生后的響應(yīng)邏輯,例如,UserRegistered 事件可以被 SendWelcomeEmail 監(jiān)聽(tīng)器處理。

Mail目錄 make:mail

這個(gè)目錄默認(rèn)不存在,但是可以通過(guò)執(zhí)行 make:mail 命令生成,Mail 目錄包含應(yīng)用所有郵件相關(guān)類(lèi),郵件對(duì)象允許你在一個(gè)地方封裝構(gòu)建郵件所需的所有業(yè)務(wù)邏輯,然后使用 Mail::send 方法發(fā)送郵件。

Notifications目錄 make:notification

這個(gè)目錄默認(rèn)不存在,你可以通過(guò)執(zhí)行 make:notification 命令連帶創(chuàng)建, Notifications 目錄包含應(yīng)用發(fā)送的所有通知,比如事件發(fā)生通知。Laravel 的通知功能將通知發(fā)送和通知驅(qū)動(dòng)解耦,你可以通過(guò)郵件,也可以通過(guò)Slack、短信或者數(shù)據(jù)庫(kù)發(fā)送通知。

Policies目錄 make:policy

這個(gè)目錄默認(rèn)不存在,你可以通過(guò)執(zhí)行 make:policy 命令生成策略類(lèi)來(lái)創(chuàng)建, Policies 目錄包含了應(yīng)用所有的授權(quán)策略類(lèi),策略用于判斷某個(gè)用戶(hù)是否有權(quán)限去訪(fǎng)問(wèn)指定資源。更多詳情,請(qǐng)查看授權(quán)文檔。

Providers目錄

Providers 目錄包含應(yīng)用的所有服務(wù)提供者。服務(wù)提供者在應(yīng)用啟動(dòng)過(guò)程中綁定服務(wù)到容器、注冊(cè)事件以及執(zhí)行其他任務(wù)為即將到來(lái)的請(qǐng)求處理做好準(zhǔn)備工作。
在新安裝的 Laravel 應(yīng)用中,該目錄已經(jīng)包含了一些服務(wù)提供者,你可以按需添加自己的服務(wù)提供者到該目錄。

Rules目錄 make:rule

該目錄默認(rèn)不存在,但是會(huì)伴隨你執(zhí)行 Artisan 命令 make:rule 自動(dòng)生成。Rules 目錄包含應(yīng)用的自定義驗(yàn)證規(guī)則對(duì)象,這些規(guī)則用于在單個(gè)對(duì)象中封裝復(fù)雜的驗(yàn)證邏輯。

php artisan list make

Available commands for the "make" namespace:
make:auth Scaffold basic login and registration views and routes
make:channel Create a new channel class
make:command Create a new Artisan command
make:controller Create a new controller class
make:event Create a new event class
make:exception Create a new custom exception class
make:factory Create a new model factory
make:job Create a new job class
make:listener Create a new event listener class
make:mail Create a new email class
make:middleware Create a new middleware class
make:migration Create a new migration file
make:model Create a new Eloquent model class
make:notification Create a new notification class
make:observer Create a new observer class
make:policy Create a new policy class
make:provider Create a new service provider class
make:request Create a new form request class
make:resource Create a new resource
make:rule Create a new validation rule
make:seeder Create a new seeder class
make:test Create a new test class

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI