Hello Laravel! Laravel 入門教程
Hello Laravel! 準備
什么是 Laravel?
Laravel 是(shi)一個基于(yu) PHP 的開源(yuan) web 應用程序(xu)框架,由(you) Taylor Otwell 創建并于(yu) 2011 年首次發布。它遵循(xun) MVC(模型-視圖-控制器)設計模式,旨在幫助開發者構建優雅、簡潔且易于(yu)維(wei)護(hu)的 web 應用程序(xu)。
為什么選擇 Laravel?
優雅的語法
Laravel 以其簡(jian)潔和(he)易讀(du)的(de)(de)(de)代碼(ma)風格著稱,使開(kai)發者能夠以最小的(de)(de)(de)代碼(ma)編寫(xie)出功能強大的(de)(de)(de)應用程序。它(ta)的(de)(de)(de)語法(fa)簡(jian)潔明了,減少了開(kai)發者的(de)(de)(de)工(gong)作量,并提高了代碼(ma)的(de)(de)(de)可(ke)讀(du)性(xing)和(he)可(ke)維護性(xing)。
豐富的功能
Laravel 提供了許(xu)多開箱(xiang)即用的功(gong)能,如:
- 路由系統:定義應用程序的 URL 路徑和對應的控制器。
- Eloquent ORM:一個強大的 ActiveRecord 實現,用于處理數據庫操作。
- Blade 模板引擎:一個簡單、靈活的模板引擎,用于生成 HTML。
- 中間件:方便處理 HTTP 請求的過濾和修改。
- 任務調度:通過 Cron 作業自動執行任務。
強大的社區支持
Laravel 擁(yong)有一個(ge)活(huo)躍且龐大(da)的(de)社(she)區,豐富的(de)文檔(dang)和大(da)量的(de)第三方包和插件(jian),使開(kai)發者可以輕松找到所需(xu)的(de)資(zi)源和解決方案(an)。官方還提供了詳細的(de)文檔(dang)和教程,幫助新(xin)手(shou)快(kuai)速上手(shou)。
安全性
Laravel 在開發(fa)過程(cheng)中考慮到了(le)許多常見的(de)安全問(wen)題,如 SQL 注(zhu)入(ru)、跨(kua)站請求偽造(CSRF)和跨(kua)站腳本攻擊(XSS)。框(kuang)架(jia)內置(zhi)了(le)各種工具和機制(zhi)來保護應用程(cheng)序的(de)安全。
易于擴展
由(you)于 Laravel 的模塊化設計和靈活的架構,開發者可以(yi)根據需(xu)要輕(qing)松擴展和定制框架。無論是添加新功(gong)能還(huan)是集成第三方(fang)服務,Laravel 都提供(gong)了方(fang)便的接口(kou)和工(gong)具。
Laravel 的流行程度
Laravel 的(de)流行程度可(ke)以通過(guo) GitHub 的(de) star 數等指(zhi)標來衡量。截至 2024 年,Laravel 在 GitHub 上擁有(you)超(chao)過(guo) 74k 個 stars,顯示了其在開發者社區中(zhong)的(de)廣泛接受度。
為(wei)了更(geng)好(hao)地理(li)解 Laravel 的(de)受歡迎程度,我們可以將其(qi)與其(qi)他(ta)流(liu)行的(de) web 框(kuang)架進行比較:
其他流行的 Web 框架對比
- Django (Python):Django 是一個高層次的 Python web 框架,專注于快速開發和簡潔的設計。截至 2024 年,Django 在 GitHub 上有約 72k 個 stars。
- Ruby on Rails (Ruby):Ruby on Rails 是一個流行的 Ruby web 框架,強調開發效率和代碼優雅。截至 2024 年,Rails 在 GitHub 上有約 53k 個 stars。
- Spring Boot (Java):Spring Boot 是一個基于 Java 的框架,用于創建獨立的、生產級的 Spring 應用程序。截至 2024 年,Spring Boot 在 GitHub 上有約 69k 個 stars
- Express (Node.js):Express 是一個基于 Node.js 的快速、簡潔的 web 框架,適用于構建單頁、多頁和混合 web 應用程序。截至 2024 年,Express 在 GitHub 上有約 62k 個 stars。
通過與(yu)這些(xie)流行框架的對比,可以(yi)看出 Laravel 在 web 開發社(she)區(qu)中擁有很(hen)高的知名度(du)和廣泛的使用基礎。
環境準備
以下步驟均在 Windows10 下完(wan)成
首先在學習 Laravel 之前,需要準備必要的環境,這次入門教程以最新的 Laravel 版本作為開發基礎,也就是 Laravel11,它所需要的 PHP 版本環境最低要求是 >=8.2, 不光是 PHP,Laravel 作為全棧框架還需要 Node 環境。本次課程還需要用 Nginx 和 Mysql 等環境。所以為了簡化入門教程的帶來的環境困惱,在這里我們選擇了集成這些軟件包的開發軟件,當然如果你是使用其他的軟件,例如 wamp phpstudy 之類(lei)的也是(shi)可(ke)以的。
下載 Laragon
選擇下面的版本安裝

下(xia)載(zai)成功(gong)之后,按照提示直接點(dian)擊下(xia)一步下(xia)一步安(an)裝即可。再 Laraegon 安(an)裝成功(gong)之后,你會看(kan)到(dao)軟(ruan)件界(jie)面
注意(yi)一定要記住 Laragon 安裝的目錄
看到下面的界面,就算是安裝成功了

設置工作目錄
這一(yi)步非常重要,一(yi)定要設置(zhi)好,因為 Laragon 會幫根據(ju)文件目錄名(ming)稱自動創建(jian)虛擬(ni)主機(ji),就省的自己(ji)去設置(zhi)虛擬(ni)域名(ming)之類的了。
點擊右上角的設置

然后會看到下面的界面,根據自己實際的項目目錄設置對應的值

如圖,本人所有的項目都設置在 C 盤的 project 目錄,所以在之后安裝 Laravel 項目的時候,我都會在 c:\project 目錄下安裝
添加 PHP 版本
由于需要使用 PHP >= 8.2 版(ban)(ban)本,所以(yi)這(zhe)里需(xu)要安裝添加一(yi)個 8.2 版(ban)(ban)本,Laragon 添加 PHP 版(ban)(ban)本非常簡單。可以(yi)到 PHP 軟件包下載頁面
找到對應版本,這里選擇線程安全版本 VS16 x64 Thread Safe (2024-May-08 07:21:58)

點擊 zip 下載 ?
下載之后,找到 Laragon 的安裝目錄,找到目錄下的 bin\php 目錄,然后復制上面下載好的 PHP zip 包到該目錄

直接解壓到當前目錄即可,解壓完成之后呢,找到 windows 右下角的圖標,如下圖所示

右擊 Laragon 的圖標,然后選擇 PHP,如圖,選擇對應的 PHP 版本即可

然后再 Laragon 軟件,點擊啟動 nginx 和 mysql,那么項目所需要的環境就已經安裝好了

設置環境變量
找到編輯環境變量配置,打開它

點擊環境變量

找到 path 變量,然后點擊它

然后再點擊新建,在復制你自己本地的 PHP 版本解壓后的目錄地址 C:\software\laragon\bin\php\php-8.2.15-Win32-vs16-x64(這是本人的本機目錄) 粘貼到新建的變量中

打開 cmd 運行 php -v, 你會看到下面的輸出就代表成功了

這里我建議不要使用 windows 自帶的命令行,使用 Laragon 帶的 cmder 更好。
因為支持
Linux相關命令,用起來(lai)更順手。而且可以隨(sui)意(yi)設置 PHP 版本,不需(xu)要設置環境變量(liang)(需(xu)要重新(xin)打開一個新(xin)的 cmder)。
打開 Laragon 軟件界面,如下圖,點擊它

然后看到軟件界面如下

Composer 安裝
第(di)二步(bu),安(an)裝 Composer。composer 安(an)裝比較簡單,只需要到(dao)下載的頁面即可(ke)
點擊下(xia)(xia)面的所指下(xia)(xia)載安裝

下載完成之后,雙擊 exe,點擊下一步下一步即可完成安裝即可,安裝完成之后呢,打開 cmder,輸入下面的命令
composer -v

安裝成功之后,還需要設置(zhi)鏡像,目前據(ju)我(wo)所知,華為鏡像更新的(de)比較及時,可以復制下面(mian)的(de)命令(ling)的(de)設置(zhi)鏡像
composer config -g repo.packagist composer //repo.huaweicloud.com/repository/php/
設置(zhi)好鏡像之后,來安裝(zhuang)初始(shi)化(hua) Laravel 的初始(shi)化(hua)項(xiang)目,首(shou)先我們安裝(zhuang) Laravel 項(xiang)目安裝(zhuang)器,使用(yong)下面的命令
composer global require laravel/installer
執行命令之后,等(deng)待安裝(zhuang)完(wan)成即(ji)可(ke)。安裝(zhuang)完(wan)成之后,使用(yong)下面的命令
Laravel -v
會有如圖輸出

初始化 Laravel 項目
Laravel 安裝器安裝完成之后,我們就可以來安裝 Laravel 項目了。還記得上面說的設置工作目錄嗎?現在我要在 c:\project 目(mu)錄(lu)下創建新(xin)項目(mu)。所以要(yao)求(qiu)你(ni)也需要(yao)在你(ni)自己實際的設置的工作目(mu)錄(lu)下,使(shi)用下面的命令(ling)來創建項目(mu)
laravel new lara-study
按照如圖所示,選擇對應的選項進行安裝。這里我們盡量簡單的來,不使用任何包裝的包,盡量以原生框架開發

然后中途會有提示使用什么數據庫驅動,如下圖,教程使用 Mysql,圖片安裝上選擇了 yes,出現了報錯,這個錯誤可以忽略。為了避免誤解,請各位在安裝時候輸入
no

輸入完(wan)成(cheng)之后,繼續等待它安裝完(wan)成(cheng)就(jiu)行(xing)了。
完成之后,記得重啟 Laragon,在自動創建虛擬主機,如下圖,點擊停止之后,再點擊啟動將會自動創建虛擬機

Laragon 會創建一個以目錄名稱命名的lara-study.test虛擬域名,直接直接通過它訪問項目。如果你出現如下圖的報錯,請不要擔心,只是數據沒有配置而已,等會下面來配置數據庫信息

配置數據庫
本教程使(shi)用的(de) Mysql 數(shu)據庫作為(wei)驅動,所以數(shu)據庫配置 Mysql 即可。找到右下角的(de) Laragon 軟件,如(ru)圖(tu)所示,修(xiu)改 mysql 的(de) root 密碼。
更(geng)換的時候必須停止 Mysql 服務,軟件(jian)會有提示

設置本地的 root 密碼,設置完成之后再啟動就可以了。

下面使用你常用的編輯器打開項目,我這里使用的是 phpstorm IDE 打開。找到 .env 文件,如下所示

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=lara_study // 數據庫名稱
DB_USERNAME=root
DB_PASSWORD= // 配置你剛才設置 root 密碼
配置(zhi)完成(cheng)之后,先(xian)不著急(ji)訪問項目(mu),我們先(xian)執(zhi)行(xing)下(xia)一個命(ming)令,來創建數(shu)據(ju)(ju)庫,因為現在鏈接了數(shu)據(ju)(ju)庫,但沒(mei)有(you) database 還沒(mei)有(you)設置(zhi),所以依然是報錯的狀態(tai)。在項目(mu)根目(mu)錄,執(zhi)行(xing)下(xia)面的命(ming)令
php artisan migrate
執行命令之后,會詢問你是否創建數據庫,直接回車或者填寫 yes 自動創建數據庫

執行成功之后,再來訪問 lara-study.test 域名,哦豁!!!歡迎來到 Laravel ?? !!! Welcome !!!

目錄結構
app 目錄
app 目錄(lu)包(bao)含(han)您(nin)應用程序的核心(xin)代碼(ma)。我們很(hen)快(kuai)會更詳(xiang)細地探索這個目錄(lu);然而,您(nin)應用程序中幾乎所有的類(lei)都將位于此目錄(lu)。
app 目(mu)錄(lu)就是(shi)我們實(shi)現功能(neng)開發(fa)的目(mu)錄(lu)
bootstrap 目錄
bootstrap 目錄包含引導框架的 app.php 文件。此目錄還包含一個 cache 目錄,其(qi)中包含用于性(xing)能優化的框架(jia)生成文(wen)件,例如路由(you)和服務緩存(cun)文(wen)件。
config 目錄
顧名思義,config 目錄包(bao)含您(nin)應用程序的所(suo)(suo)有(you)配(pei)置文件(jian)。通讀所(suo)(suo)有(you)這(zhe)些文件(jian)并熟悉(xi)您(nin)可用的所(suo)(suo)有(you)選(xuan)項是個好主意。
config 目(mu)錄在之后開發(fa)過程中探索
database 目錄
database 目(mu)錄(lu)包含您(nin)的數據(ju)庫遷移(yi)、模型工(gong)廠和種子文件。如果(guo)您(nin)愿意,還可(ke)以使用此(ci)目(mu)錄(lu)來保存 SQLite 數據(ju)庫。
該(gai)目錄主要實(shi)現創建數(shu)據庫表(biao)的遷移文件
public 目錄
public 目錄包含 index.php 文件,這是所有請求進(jin)入您應用(yong)程序的(de)入口(kou)點,并配置自動(dong)加載。此目(mu)錄還(huan)包含(han)您的(de)資產,如圖像、JavaScript 和(he) CSS。
resources 目錄
resources 目錄包含您(nin)的視圖以及原始(shi)的、未編譯的資產,如 CSS 或 JavaScript。
routes 目錄
routes 目錄包含您應用程序的所有路由定義。默認情況下,Laravel 附帶了兩個路由文件:web.php 和 console.php。
web.php 文件包含 Laravel 放置在 web 中間件組中的路由,該組提供會話狀態、CSRF 保護和 cookie 加密。如果您的應用程序不提供無狀態的、RESTful API,則您的所有路由很可能都將在 web.php 文件中定義。
console.php 文件是您可以定義所有基于閉包的控制臺命令的地方。每個閉包都綁定到一個命令實例,允許簡單地與每個命令的 IO 方法進行交互。盡管此文件不定義 HTTP 路由,它定義了基于控制臺的應用程序入口點(路由)。您還可以在 console.php 文件中安排任務。
storage 目錄
storage 目錄包含您的日志、編譯的 Blade 模板、基于文件的會話、文件緩存以及框架生成的其他文件。此目錄分為 app、framework 和 logs 目錄。app 目錄可用于存儲應用程序生成的任何文件。framework 目錄用于存儲框架生成的文件和緩存。最后,logs 目錄包含您應(ying)用(yong)程序的(de)日志文件。
storage/app/public 目錄可用于存儲用戶生成的文件,如應該公開訪問的個人資料頭像。您應該在 public/storage 創建指向此目錄的符號鏈接。您可以使用 php artisan storage:link Artisan 命令(ling)創(chuang)建鏈接。
tests 目錄
tests 目錄包含您的自動化測試。默認情況下提供了 或 單元測試和功能測試示例。每個測試類應以 Test 單詞為后綴。您可以使用 /vendor/bin/pest 或 /vendor/bin/phpunit 命令運行測試。或者,如果您希望對測試結果有更詳細和美觀的表示,您可以使用 php artisan test Artisan 命令運(yun)行測試(shi)。
vendor 目錄
vendor 目錄(lu)包含(han)您的 依賴項。
不必為這么多文件夾感到害怕,實際上在開發過程中與我們打交道的最多的就是
App目錄和routes目錄。至(zhi)(zhi)于其他目錄,至(zhi)(zhi)少在(zai)現在(zai)可(ke)以(yi)放(fang)一放(fang),沒必(bi)要太(tai)關注(zhu)。
那么到這里,關于 Laravel 初始化的過程已經全部講解結束,還順帶了解了下 Laravel 的目錄結構。當然在后續篇章中,我們不會立即講解框架的一些概念,例如容器,服務提供者 門面 之類(lei)的(de)(de)晦澀(se)難懂的(de)(de)概念,因為這對于入門(men)教(jiao)程來(lai)(lai)說是不需(xu)要去深(shen)入了解的(de)(de)。但是如果涉(she)及到相(xiang)關(guan)的(de)(de)概念,教(jiao)程也(ye)會指出來(lai)(lai)。教(jiao)程的(de)(de)目(mu)的(de)(de)是盡快能讓你使用框架開發出來(lai)(lai)一個項目(mu),能夠(gou)將(jiang)自(zi)己的(de)(de)想法用 Laravel 表(biao)達出來(lai)(lai)。
后(hou)面案(an)例代(dai)碼將會標(biao)記其所在文件相(xiang)對路徑,以根目錄為參考(kao)物。例如(ru)
// app/Htttp/HelloController
somecode
