1. 程式人生 > >初入laravel之坑

初入laravel之坑

Ken

初入此坑,痛苦無奈啊,只能多看文件

首要問題還是網路問題,如果網速慢,也沒辦法,只能等了, 解決安裝composer的配置問題 下載 composer https://getcomposer.org/Composer-Setup.exe ​getcomposer.org 注意在安裝composer的時候可能會因為網路問題,連結不到外國伺服器

請使用代理連結伺服器,

或者離線安裝

安裝完成測試 具體請看

Composer 中文網 / Packagist 中國全量映象 ​www.phpcomposer.com 圖示 composer 的使用教程 簡介 | Composer 中文文件 | Composer 中文網

​docs.phpcomposer.com

PHP >= 7.1.3
PHP OpenSSL 擴充套件
PHP PDO 擴充套件
PHP Mbstring 擴充套件
PHP Tokenizer 擴充套件
PHP XML 擴充套件
PHP Ctype 擴充套件
PHP JSON 擴充套件

安裝 Laravel Laravel 使用 Composer 管理依賴,所以,安裝之前確保已經在機器上安裝了 Composer(如果尚未安裝的話參考這份文件去安裝吧)。

通過 Laravel 安裝器

首先,通過 Composer 安裝 Laravel 安裝器:

composer global require "laravel/installer"

安裝完成後,通過簡單的 laravel new 命令即可在當前目錄下建立一個新的 Laravel 應用,例如,laravel new blog將會建立一個名為 blog 的新應用,且包含所有 Laravel 依賴。該安裝方法比通過 Composer 安裝要快很多:

laravel new blog

如果之前已經安裝過舊版本的 Laravel 安裝器,需要更新後才能安裝最新的 Laravel 5.6 框架應用:

composer global update
通過 Composer Create-Project

你還可以在終端中通過 Composer 的 create-project 命令來安裝 Laravel 應用:

composer create-project --prefer-dist laravel/laravel blog

如果要下載安裝 Laravel 其他版本應用,比如 5.5 版本,可以使用這個命令:

composer create-project --prefer-dist laravel/laravel blog 5.5.*。

本地開發伺服器

如果你在本地安裝了 PHP,並且想要使用 PHP 內建的開發環境伺服器為應用提供服務,可以使用 Artisan 命令 serve:

php artisan serve

該命令將會在本地啟動開發環境伺服器,這樣在瀏覽器中通過 http://localhost:8000 即可訪問應用:

當然我們可以使用apache 為我們的專案配置虛擬主機

開啟apache的安裝目錄

下面的vhosts.conf檔案,為我們的專案配置一個虛擬主機

編寫一下配置

將laravel的專案的public目錄暴露出去

這樣我們就可以在瀏覽器輸入http://ddd.com訪問了

接下來我們來講解一下專案目錄

根目錄 App目錄

app 目錄包含了應用的核心程式碼,注意不是框架的核心程式碼,框架的核心程式碼在 /vendor/laravel/framework 裡面,此外你為應用編寫的程式碼絕大多數也會放到這裡,當然,如果你基於 Composer 做了 PHP 元件化開發的話,這裡面存放的恐怕也只有一些入口性的程式碼了;

Bootstrap目錄

bootstrap 目錄包含了少許檔案,用於框架的啟動和自動載入配置,還有一個 cache 資料夾,裡面包含了框架為提升效能所生成的檔案,如路由和服務快取檔案;

Config目錄

config 目錄包含了應用所有的配置檔案,建議通讀一遍這些配置檔案以便熟悉 Laravel 所有預設配置項;

Database目錄

database 目錄包含了資料庫遷移檔案及填充檔案,如果有使用 SQLite 的話,你還可以將其作為 SQLite 資料庫存放目錄;

Public目錄

public 目錄包含了應用入口檔案 index.php 和前端資原始檔(圖片、JavaScript、CSS等),該目錄也是 Apache 或 Nginx 等 Web 伺服器所指向的應用根目錄,這樣做的好處是隔離了應用核心檔案直接暴露於 Web 根目錄之下,如果許可權系統沒做好或伺服器配置有漏洞的話,很可能導致應用敏感檔案被黑客竊取,進而對網站安全造成威脅;

Resources目錄

resources 目錄包含了應用檢視檔案和未編譯的原生前端資原始檔(LESS、SASS、JavaScript),以及本地化語言檔案;

Routes目錄

routes 目錄包含了應用定義的所有路由。Laravel 預設提供了四個路由檔案用於給不同的入口使用:web.php、api.php、 console.php 和 channels.php。

web.php 檔案包含的路由都位於 RouteServiceProvider 所定義的 web 中介軟體組約束之內,因而支援 Session、CSRF 保護以及 Cookie 加密功能,如果應用無需提供無狀態的、RESTful 風格的 API,那麼路由基本上都要定義在 web.php 檔案中。

api.php 檔案包含的路由位於 api 中介軟體組約束之內,支援頻率限制功能,這些路由是無狀態的,所以請求通過這些路由進入應用需要通過 token 進行認證並且不能訪問 Session 狀態。

console.php 檔案用於定義所有基於閉包的控制檯命令,每個閉包都被繫結到一個控制檯命令並且允許與命令列 IO 方法進行互動,儘管這個檔案並不定義 HTTP 路由,但是它定義了基於控制檯的應用入口(路由)。

channels.php 檔案用於註冊應用支援的所有事件廣播頻道。

Storage目錄

storage 目錄包含了編譯後的 Blade 模板、基於檔案的 Session、檔案快取,以及其它由框架生成的檔案,該目錄被細分為成 app、framework 和 logs 子目錄,app 目錄用於存放應用生成的檔案,framework 目錄用於存放框架生成的檔案和快取,最後,logs 目錄存放的是應用的日誌檔案。

storage/app/public 目錄用於儲存使用者生成的檔案,比如可以被公開訪問的使用者頭像,要達到被 Web 使用者訪問的目的,你還需要在 public (應用根目錄下的 public 目錄)目錄下生成一個軟連線 storage 指向這個目錄。你可以通過 php artisan storage:link 命令生成這個軟連結。

Tests目錄

tests 目錄包含自動化測試檔案,其中預設已經提供了一個開箱即用的PHPUnit 示例;每一個測試類都要以 Test 開頭,你可以通過 phpunit 或 php vendor/bin/phpunit 命令來執行測試。

Vendor目錄

vendor 目錄包含了應用所有通過 Composer 載入的依賴。

App目錄 應用的核心程式碼位於 app 目錄下,預設情況下,該目錄位於名稱空間 App 下, 並且被 Composer 通過 PSR-4 自動載入標準 自動載入。

app 目錄下包含多個子目錄,如 Console、Http、Providers等。Console 和 Http 目錄提供了進入應用核心的 API,HTTP 協議和 CLI 是和應用進行互動的兩種機制,但實際上並不包含應用邏輯。換句話說,它們只是兩個嚮應用傳送命令的方式。Console 目錄包含了所有開發者編寫的 Artisan 命令,Http 目錄包含了控制器、中介軟體和請求等。

其他目錄會在你通過 Artisan 命令 make 生成相應類的時候自動生成到 app 目錄下。例如,app/Jobs 目錄直到你執行 make:job 命令生成任務類時才會出現在 app 目錄下。

注:app 目錄中的很多類都可以通過 Artisan 命令生成,要檢視所有有效的命令,可以在終端中執行 php artisan list make 命令。 Broadcasting目錄

Broadcasting 目錄包含了應用所需的所有廣播頻道類,這些類通過 make:channel 命令生成。該目錄預設不存在,但是當你通過命令第一次建立頻道類時會自動生成。想要了解更多關於頻道的資訊,可以檢視事件廣播文件。

Console目錄

Console 目錄包含應用所有自定義的 Artisan 命令,這些命令類可以使用 make:command 命令生成。該目錄下還有 Console/Kernel 類,在這裡可以註冊自定義的 Artisan 命令以及定義排程任務。

Events目錄

這個目錄預設不存在,但是可以通過 event:generate 和 make:event 命令建立。該目錄用於存放事件類。事件類用於告知應用其他部分某個事件發生情況並提供靈活的、解耦的處理機制。

Exceptions目錄

Exceptions 目錄包含應用的異常處理器,同時還是處理應用丟擲的任何異常的好地方。如果你想要自定義異常如何記錄或渲染,需要編輯該目錄下的 Handler 類。

Http目錄

Http 目錄包含了控制器、中介軟體以及表單請求等,幾乎所有通過 Web 進入應用的請求處理都在這裡進行。

Jobs目錄

該目錄預設不存在,可以通過執行 make:job 命令生成,Jobs 目錄用於存放佇列任務,應用中的任務可以被推送到佇列,也可以在當前請求生命週期內同步執行。同步執行的任務有時也被看作命令,因為它們實現了命令模式。

Listeners目錄

這個目錄預設不存在,可以通過執行 event:generate 和 make:listener 命令建立。Listeners 目錄包含處理事件的類(事件監聽器),事件監聽器接收一個事件並提供對該事件發生後的響應邏輯,例如,UserRegistered 事件可以被 SendWelcomeEmail 監聽器處理。

Mail目錄

這個目錄預設不存在,但是可以通過執行 make:mail 命令生成,Mail 目錄包含應用所有郵件相關類,郵件物件允許你在一個地方封裝構建郵件所需的所有業務邏輯,然後使用 Mail::send 方法傳送郵件。

Notifications目錄

這個目錄預設不存在,你可以通過執行 make:notification 命令連帶建立, Notifications 目錄包含應用傳送的所有通知,比如事件發生通知。Laravel 的通知功能將通知傳送和通知驅動解耦,你可以通過郵件,也可以通過Slack、簡訊或者資料庫傳送通知。

Policies目錄

這個目錄預設不存在,你可以通過執行 make:policy 命令生成策略類來建立, Policies 目錄包含了應用所有的授權策略類,策略用於判斷某個使用者是否有許可權去訪問指定資源。更多詳情,請檢視授權文件。

Providers目錄

Providers 目錄包含應用的所有服務提供者。服務提供者在應用啟動過程中繫結服務到容器、註冊事件以及執行其他任務為即將到來的請求處理做好準備工作。

在新安裝的 Laravel 應用中,該目錄已經包含了一些服務提供者,你可以按需新增自己的服務提供者到該目錄。

Rules目錄

該目錄預設不存在,但是會伴隨你執行 Artisan 命令 make:rule 自動生成。Rules 目錄包含應用的自定義驗證規則物件,這些規則用於在單個物件中封裝複雜的驗證邏輯,想要了解更多的話,請參考驗證文件。