安裝

認識 Laravel

Laravel 是一個 Web(網頁) App 框架,有既簡單又優雅的語法。Web 框架提供了製作網站的起始架構。使用框架,你就能專心製作令人驚艷的作品,而框架則幫你處理掉麻煩的小地方。

Laravel 致力於提供讓人驚豔的 DX (開發體驗, Developer Experience),並提供多種強大的功能,包含相依性插入 (Dependency Injection)、描述性的資料庫抽象層、佇列與排程任務、單元測試 (Unit Testing) 與整合測試 (Integration Testing)⋯⋯等功能。

不管讀者是 PHP 新手還是網頁框架新手、或是已經有多年的經驗,Laravel 都是可陪伴你進步的框架。我們可以協助你跨出成為網頁開發人員的第一步,或是助你一臂之力,讓你的技術更上一層樓。我們迫不及待想看看你的成果!

lightbulb

是 Laravel 新手嗎?請參考 Laravel Bootcamp (英語) 來瞭解 Laravel 框架。同時,我們也會帶領你建立你的第一個 Laravel 專案。

為什麼選擇 Laravel?

市面上有多款工具與框架可用來製作 Web App。不過,我們相信,製作現代化的全端 Web App,Laravel 是最佳選擇。

進步性的框架

我們喜歡把 Laravel 稱為一個「進步性的 (Prograssive)」框架。這麼說,是因為 Laravel 可以伴著你起進步。若你第一次接觸網頁開發,Laravel 有許多的說明文件、教學、以及影片教學可以讓你無痛學習 Laravel。

若你是資深開發人員,Laravel 提供了強健的相依性插入單元測試佇列即時事件⋯⋯等功能。Laravel 為打造專業的 Web App 做了許多微調,並可處理企業級的任務。

可彈性調整規模的框架

在規模調整上,Laravel 非常彈性。多虧於 PHP 本身可彈性調整規模 (Scalable) 的特性、以及 Laravel 內建對於像 Redis 之類的快速分散式快取系統支援,在 Laravel 中,要水平調整規模非常簡單。其實,使用 Laravel 的專案可以輕鬆地調整到每個月能處理數百萬筆 Request(請求) 的規模。

需要調整到極限的規模嗎?使用 Laravel Vapor 等平台,就可以讓你在 AWS 上使用最新的 Serverless 技術,以幾乎不限規模的方式來執行 Laravel 專案。

社群的框架

Laravel 結合了 PHP 生態系統中多個最好的套件來提供強健且對開發人員友善的框架。此外,來自世界各地數千位優秀的開發人員也參與貢獻了 Laravel 框架。或許,你也有機會參與貢獻 Laravel。

你的第一個 Laravel 專案

在開始建立第一個 Laravel 專案前,請先確定本機電腦上有安裝 PHP 與 Composer。若使用 macOS 開發,可通過 Homebrew 來安裝 PHP 與 Composer。此外,我們也建議安裝 Node 與 NPM

安裝好 PHP 與 Composer 後,可使用 Composer 的 create-project 指令來建立新的 Laravel 專案:

1composer create-project laravel/laravel example-app
1composer create-project laravel/laravel example-app

或者,也可以使用 Composer 來全域性地安裝 Laravel Installer,以建立新 Laravel 專案:

1composer global require laravel/installer
2
3laravel new example-app
1composer global require laravel/installer
2
3laravel new example-app

建立好專案後,可使用 Laravel 的 Artisan CLI serve 指令來開始 Laravel 的本機開發伺服器:

1cd example-app
2
3php artisan serve
1cd example-app
2
3php artisan serve

開啟 Artisan 開發伺服器後,就可以在瀏覽器中開啟 http://localhost:8000 來存取專案。接著,我們就可以開始進入 Laravel 生態系統的下一步。當然,也可以先來設定一下資料庫

lightbulb

在開發 Laravel 專案時,若想先快速地起個頭,可以考慮使用 Laravel 的入門套件。Laravel 的入門套件可以為新專案提供後端與前端的登入 Scaffolding。

Laravel 與 Docker

我們希望不論使用什麼作業系統,都可以儘可能地用簡單的方式開始入門 Laravel。因此,有幾個選項可讓你在本機上開發並執行 Laravel 專案。你可以稍後再來進一步瞭解這些選項。Laravel 提供了 Sail,Sail 是 Laravel 專案內建的方法,可以使用 Docker 來執行 Laravel 專案。

Docker 這款工具使用小型、輕量的「Container (容器)」來執行網站與服務。使用 Container 就不會影響到本機上所安裝的軟體或設定。這表示,使用 Docker,讀者就不需擔心如何在自己電腦上設定一些如網頁伺服器或資料庫等複雜的開發工具。要開始使用 Sail,只需要先安裝 Docker Desktop 即可。

Laravel Sail 是一個輕量的命令列介面,可用來操作 Laravel 預設的 Docker 設定。對於使用 PHP、MySQL 與 Redis 來建立 Laravel 專案,Sail 是一個不錯的入門選項,且不需預先具備有關 Docker 的知識。

lightbulb

已經是 Docker 大師了嗎?別擔心!在 docker-compose.yml 內能對 Sail 的所有東西進行客製化。

使用 macOS 入門

若要 Mac 上進行開發,且已安裝了 Docker Desktop,則可以使用一個簡單的終端機指令來建立新的 Laravel 專案。舉例來說,要在一個名為「example-app」的檔案夾內建立新的 Laravel 專案,可以在終端機內執行下列指令:

1curl -s "https://laravel.build/example-app" | bash
1curl -s "https://laravel.build/example-app" | bash

當然,我們任意修改該網址的「example-app」為任意值 —— 不過要注意,這個值只能包含字母、數字、減號 (-)、底線 (_)。Laravel 專案目錄會被建立在執行該指令的目錄下。

由於 Sail 的應用程式 Container 是在你的本機電腦上建置的,因此 Sail 可能會花費數分鐘來安裝。

建立好專案後,就可以打開該檔案夾並開啟 Laravel Sail。Laravel Sail 提供了一個可與 Laravel 預設的 Docker 設定互動的簡單指令列介面:

1cd example-app
2 
3./vendor/bin/sail up
1cd example-app
2 
3./vendor/bin/sail up

開啟專案的 Docker Container 後,就可以在瀏覽器中開啟 http://localhost 來存取專案網站。

lightbulb

若要繼續瞭解更多有關 Laravel Sail 的資訊,請參考 Laravel Sail 的完整說明文件

使用 Windows 入門

在 Windows 裝置上建立新的 Laravel 專案前,請先確認一下是否有安裝 Docker Desktop。接著,請確認是否有安裝並啟用 WSL2 (適用於 Linux 的 Windows 子系統 2,Windows Subsystem for Linux 2)。使用 WSL 就可以在 Windows 10 上原生地執行 Linux 二進位可執行檔。可以在 Microsoft 的《開發人員環境說明文件》瞭解有關如何安裝並啟用 WSL2 的資訊。

lightbulb

安裝並啟用 WSL2 後,請確認是否有將 Docker Desktop 設為使用 WSL2 後端

接著,我們就可以來建立你的第一個 Laravel 專案。請先開啟 Windows Terminal,然後為 WSL2 Linux 作業系統開啟一個新的終端機工作階段。接著,可以使用一個簡單的終端機命令來建立新的 Laravel 專案。舉例來說,若要在名為「example-app」的資料夾內建立一個新的 Laravel 專案,請在終端機內執行下列命令:

1curl -s https://laravel.build/example-app | bash
1curl -s https://laravel.build/example-app | bash

當然,我們任意修改該網址的「example-app」為任意值 —— 不過要注意,這個值只能包含字母、數字、減號 (-)、底線 (_)。Laravel 專案目錄會被建立在執行該指令的目錄下。

由於 Sail 的應用程式 Container 是在你的本機電腦上建置的,因此 Sail 可能會花費數分鐘來安裝。

建立好專案後,就可以打開該檔案夾並開啟 Laravel Sail。Laravel Sail 提供了一個可與 Laravel 預設的 Docker 設定互動的簡單指令列介面:

1cd example-app
2 
3./vendor/bin/sail up
1cd example-app
2 
3./vendor/bin/sail up

開啟專案的 Docker Container 後,就可以在瀏覽器中開啟 http://localhost 來存取專案網站。

lightbulb

若要繼續瞭解更多有關 Laravel Sail 的資訊,請參考 Laravel Sail 的完整說明文件

在 WSL2 中進行開發

當然,之後你還需要能修改在 WSL2 內所建立的 Laravel 專案檔案。若要修改這些 WSL2 內的檔案,我們建議使用 Microsoft 的 Visual Studio Code 編輯器,並使用用於遠端開發的第一方擴充功能。

安裝好這些工具後,就可以用 Windows Terminal 在專案根目錄下執行 code 命令來開啟 Laravel 專案。

使用 Linux 入門

若要 Linux 上進行開發,且已安裝了Docker Compose,就可以使用一個簡單的終端機指令來建立新的 Laravel 專案。舉例來說,要在一個名為「example-app」的目錄內建立新的 Laravel 專案,可以在終端機內執行下列指令:

1curl -s https://laravel.build/example-app | bash
1curl -s https://laravel.build/example-app | bash

當然,我們任意修改該網址的「example-app」為任意值 —— 不過要注意,這個值只能包含字母、數字、減號 (-)、底線 (_)。Laravel 專案目錄會被建立在執行該指令的目錄下。

由於 Sail 的應用程式 Container 是在你的本機電腦上建置的,因此 Sail 可能會花費數分鐘來安裝。

建立好專案後,就可以打開該檔案夾並開啟 Laravel Sail。Laravel Sail 提供了一個可與 Laravel 預設的 Docker 設定互動的簡單指令列介面:

1cd example-app
2 
3./vendor/bin/sail up
1cd example-app
2 
3./vendor/bin/sail up

開啟專案的 Docker Container 後,就可以在瀏覽器中開啟 http://localhost 來存取專案網站。

lightbulb

若要繼續瞭解更多有關 Laravel Sail 的資訊,請參考 Laravel Sail 的完整說明文件

選擇 Sail 服務

通過 Sail 建立新的 Laravel 專案時,可以使用 with 查詢字串變數來選擇新專案的 docker-compose.yml 檔案內要設定哪些服務。可用的服務包含 mysql, pgsql, mariadb, redis, memcached, meilisearch, minio, selenium, 與 mailpit

1curl -s "https://laravel.build/example-app?with=mysql,redis" | bash
1curl -s "https://laravel.build/example-app?with=mysql,redis" | bash

若未指定要設定哪些服務,則預設將設定 mysql, redis, meilisearch, mailpit, 與 selenium

只要在網址後加上 devcontainer 參數,就可以讓 Sail 安裝一個預設的 Devcontainer

1curl -s "https://laravel.build/example-app?with=mysql,redis&devcontainer" | bash
1curl -s "https://laravel.build/example-app?with=mysql,redis&devcontainer" | bash

初始設定

Laravel 框架的所有設定檔都儲存在 config 目錄內。各個選項都有說明文件,歡迎閱讀這些檔案並熟悉可用的選項。

Laravel 預設幾乎不需要進行額外設定。你現在已經可以開始開發了!不過,可以先看看 config/app.php 檔案以及其中的說明。該檔案中包含了一些我們可能需要依據不同專案進行修改的設定選項,如: timezone (時區) 以及 locale (語系) 等。

隨環境調整的設定

根據專案是在本機還是線上環境執行,Laravel 中許多的設定值都需要作出對應的調整。因此,許多重要的設定值都使用 .env 檔案來定義。該檔案位在專案根目錄。

由於每個使用專案開發人員/伺服器都可能需要不同的環境組態設定,因此,.env 檔不應被簽入 (Commit) 到專案的版本控制中。此外,若將 .env 檔簽入版本控制的話,當有入侵者取得了版本控制儲存庫的存取權限,就可能會造成安全性風險,因為其中的機敏認證資料都會被暴露。

lightbulb

更多有關 .env 檔案以及基於環境的設定資訊,請參考完整的設定說明文件

資料庫與 Migration

現在,我們已經建立好 Laravel 專案了。接下來,你可能會想在資料庫中儲存一些資料。預設情況下,專案的 .env 檔中已經指定要讓 Laravel 連線到 127.0.0.1 上的 MySQL。若在 macOS 上開發,且需要在本機上使用 MySQL、Postgres、Redis 的話,或許可以考慮看看使用方便的 DBngin

若不想在本機上安裝 MySQL 或 Postgres,那麼使用 SQLite 資料庫也沒問題。SQLite 是一個小型、快速、單一檔案的資料庫引擎。若要開始使用 SQLite,請先建立一個空的 SQLite 檔案。一般來說,這個檔案會放在 Laravel 專案中的 database 目錄下:

1touch database/database.sqlite
1touch database/database.sqlite

接著,更新 .env 設定檔來使用 Laravel 的 sqlite 資料庫 Driver。你可以把其他的資料庫設定選項刪除:

1DB_CONNECTION=sqlite
2DB_CONNECTION=mysql
3DB_HOST=127.0.0.1
4DB_PORT=3306
5DB_DATABASE=laravel
6DB_USERNAME=root
7DB_PASSWORD=
1DB_CONNECTION=sqlite
2DB_CONNECTION=mysql
3DB_HOST=127.0.0.1
4DB_PORT=3306
5DB_DATABASE=laravel
6DB_USERNAME=root
7DB_PASSWORD=

設定好 SQLite 資料庫後,就可以執行專案的資料庫 Migration。資料庫 Migration 會建立專案的資料表:

1php artisan migrate
1php artisan migrate

接下來

現在,你已經建立好 Laravel 專案了,你可能會想知道接下來該學些什麼。首先,我們強烈建議你先閱讀下列說明文件來熟悉一下 Laravel 是怎麼運作的:

你想要如何使用 Laravel 也會影響學習的下一步。使用 Laravel 的方法不只一種,我們稍後也會來探索一下幾種使用 Laravel 的主要方法。

lightbulb

是 Laravel 新手嗎?請參考 Laravel Bootcamp (英語) 來瞭解 Laravel 框架。同時,我們也會帶領你建立你的第一個 Laravel 專案。

Laravel - 全端框架

可以將 Laravel 當作全端框架使用。我們說「全端框架」,是指你會使用 Laravel 來將 Request(請求) 導向到專案中,並使用 Blade 樣板來轉譯前端界面,或是使用如 Inertia 這類的 SPA (單頁面應用程式,Single-Page Application) 混合技術。這種使用 Laravel 的方法是最常見的。而且,在我們看來,這也是最有效率的一種使用 Laravel 的方法。

若讀者就是這麼打算使用 Laravel 的,則可能會想看看有關前端開發路由View、或 Eloquent ORM 的說明文件。此外,你可能也有興趣想了解一下如 LivewireInertia 等由社群開發的套件。這些套件能讓你在使用 Laravel 作為全端框架的同時,還能享受到許多由 JavaScript SPA 提供 UI 的好處。

若要使用 Laravel 作為全端框架,我們也強烈建議你瞭解一下如何使用 Vite 來編譯網站的 CSS 與 JavaScript。

lightbulb

若想要有個起始點可以開始寫網站,請參考看看我們的官方專案入門套件

Laravel - API 後端

也可以將 Laravel 作為 API 後端來提供給 JavaScript SPA 或手機 App 使用。舉例來說,你可以使用 Laravel 作為 Next.js App 的 API 後端來使用。在這種情況下,你可以使用 Laravel 來提供身份認證,並為 App 提供儲存與取得資料的功能,同時也能使用到 Laravel 的一些如佇列、E-Mail、通知⋯⋯等強大的功能。

若你打算這樣使用 Laravel,則可以看看有關路由Laravel Sanctum、以及 Eloquent ORM 的說明文件。

lightbulb

需要使用 Laravel 後端與 Next.js 前端的入門 Scaffolding 嗎?Laravel Breeze 提供了 API Stack 以及一個 Next.js 的前端實作,能讓你快速上手。

翻譯進度
100% 已翻譯
更新時間:
2023年2月11日 上午10:27:00 [世界標準時間]
翻譯人員:
  • cornch
幫我們翻譯此頁

留言

尚無留言

“Laravel” is a Trademark of Taylor Otwell.
The source documentation is released under MIT license. See laravel/docs on GitHub for details.
The translated documentations are released under MIT license. See cornch/laravel-docs-l10n on GitHub for details.