安裝
認識 Laravel
Laravel 是一個 Web App 框架,有既簡單又優雅的語法。Web 框架提供了製作網站的起始架構。使用框架,你就能專心製作令人驚艷的作品,而框架則幫你處理掉麻煩的小地方。
Laravel 致力於提供讓人驚豔的 DX (開發體驗, Developer Experience),並提供多種強大的功能,包含相依性插入 (Dependency Injection)、描述性的資料庫抽象層、佇列與排程任務、單元測試 (Unit Testing) 與整合測試 (Integration Testing)⋯⋯等功能。
不管讀者是 PHP 新手還是網頁框架新手、或是已經有多年的經驗,Laravel 都是可陪伴你進步的框架。我們可以協助你跨出成為網頁開發人員的第一步,或是助你一臂之力,讓你的技術更上一層樓。我們迫不及待想看看你的成果!
是 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。
Creating a Laravel Project
Before creating your first Laravel project, make sure that your local machine has PHP and Composer installed. If you are developing on macOS, PHP and Composer can be installed in minutes via Laravel Herd. In addition, we recommend installing Node and NPM.
After you have installed PHP and Composer, you may create a new Laravel project via Composer's create-project
command:
1composer create-project laravel/laravel:^10.0 example-app
1composer create-project laravel/laravel:^10.0 example-app
Or, you may create new Laravel projects by globally installing the Laravel installer via Composer:
1composer global require laravel/installer23laravel new example-app
1composer global require laravel/installer23laravel new example-app
Once the project has been created, start Laravel's local development server using Laravel Artisan's serve
command:
1cd example-app23php artisan serve
1cd example-app23php artisan serve
Once you have started the Artisan development server, your application will be accessible in your web browser at http://localhost:8000. Next, you're ready to start taking your next steps into the Laravel ecosystem. Of course, you may also want to configure a database.
在開發 Laravel 專案時,若想先快速地起個頭,可以考慮使用 Laravel 的入門套件。Laravel 的入門套件可以為新專案提供後端與前端的登入 Scaffolding。
初始設定
Laravel 框架的所有設定檔都儲存在 config
目錄內。各個選項都有說明文件,歡迎閱讀這些檔案並熟悉可用的選項。
Laravel 預設幾乎不需要進行額外設定。你現在已經可以開始開發了!不過,可以先看看 config/app.php
檔案以及其中的說明。該檔案中包含了一些我們可能需要依據不同專案進行修改的設定選項,如: timezone
(時區) 以及 locale
(語系) 等。
隨環境調整的設定
根據專案是在本機還是線上環境執行,Laravel 中許多的設定值都需要作出對應的調整。因此,許多重要的設定值都使用 .env
檔案來定義。該檔案位在專案根目錄。
由於每個使用專案開發人員/伺服器都可能需要不同的環境組態設定,因此,.env
檔不應被簽入 (Commit) 到專案的版本控制中。此外,若將 .env
檔簽入版本控制的話,當有入侵者取得了版本控制儲存庫的存取權限,就可能會造成安全性風險,因為其中的機敏認證資料都會被暴露。
更多有關 .env
檔案以及基於環境的設定資訊,請參考完整的設定說明文件。
Databases and Migrations
Now that you have created your Laravel application, you probably want to store some data in a database. By default, your application's .env
configuration file specifies that Laravel will be interacting with a MySQL database and will access the database at 127.0.0.1
.
If you are developing on macOS and need to install MySQL, Postgres, or Redis locally, consider using DBngin.
If you do not want to install MySQL or Postgres on your local machine, you can always use a SQLite database. SQLite is a small, fast, self-contained database engine. To get started, update your .env
configuration file to use Laravel's sqlite
database driver. You may remove the other database configuration options:
1DB_CONNECTION=sqlite2DB_CONNECTION=mysql3DB_HOST=127.0.0.14DB_PORT=33065DB_DATABASE=laravel6DB_USERNAME=root7DB_PASSWORD=
1DB_CONNECTION=sqlite2DB_CONNECTION=mysql3DB_HOST=127.0.0.14DB_PORT=33065DB_DATABASE=laravel6DB_USERNAME=root7DB_PASSWORD=
設定好 SQLite 資料庫後,就可以執行專案的資料庫 Migration。資料庫 Migration 會建立專案的資料表:
1php artisan migrate
1php artisan migrate
If an SQLite database does not exist for your application, Laravel will ask you if you would like the database to be created. Typically, the SQLite database file will be created at database/database.sqlite
.
目錄設定
Laravel 只能架設在「網頁目錄」的根目錄下。請不要嘗試將 Laravel 專案架設在「網頁目錄」的子目錄下。若嘗試這麼做可能會將專案的機敏檔案暴露在外。
Docker Installation Using Sail
我們希望不論使用什麼作業系統,都可以儘可能地用簡單的方式開始入門 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 的知識。
已經是 Docker 大師了嗎?別擔心!在 docker-compose.yml
內能對 Sail 的所有東西進行客製化。
Sail on 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-app23./vendor/bin/sail up
1cd example-app23./vendor/bin/sail up
Once the application's Docker containers have been started, you can access the application in your web browser at: http://localhost.
若要繼續瞭解更多有關 Laravel Sail 的資訊,請參考 Laravel Sail 的完整說明文件。
Sail on Windows
在 Windows 裝置上建立新的 Laravel 專案前,請先確認一下是否有安裝 Docker Desktop。接著,請確認是否有安裝並啟用 WSL2 (適用於 Linux 的 Windows 子系統 2,Windows Subsystem for Linux 2)。使用 WSL 就可以在 Windows 10 上原生地執行 Linux 二進位可執行檔。可以在 Microsoft 的《開發人員環境說明文件》瞭解有關如何安裝並啟用 WSL2 的資訊。
安裝並啟用 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-app23./vendor/bin/sail up
1cd example-app23./vendor/bin/sail up
Once the application's Docker containers have been started, you can access the application in your web browser at: http://localhost.
若要繼續瞭解更多有關 Laravel Sail 的資訊,請參考 Laravel Sail 的完整說明文件。
在 WSL2 中進行開發
當然,之後你還需要能修改在 WSL2 內所建立的 Laravel 專案檔案。若要修改這些 WSL2 內的檔案,我們建議使用 Microsoft 的 Visual Studio Code 編輯器,並使用用於遠端開發的第一方擴充功能。
安裝好這些工具後,就可以用 Windows Terminal 在專案根目錄下執行 code
命令來開啟 Laravel 專案。
Sail on Linux
若要 Linux 上進行開發,且已安裝了Docker Compose,就可以使用一個簡單的終端機指令來建立新的 Laravel 專案。
首先,若使用 Docker Desktop for Linux,則請執行下列指令。若不使用 Docker Desktop for Linux,則可跳過次步驟:
1docker context use default
1docker context use default
接著,若要將新的 Laravel 專案建立在名為「example-app」的目錄中,可在終端機內執行下列指令:
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-app23./vendor/bin/sail up
1cd example-app23./vendor/bin/sail up
Once the application's Docker containers have been started, you can access the application in your web browser at: http://localhost.
若要繼續瞭解更多有關 Laravel Sail 的資訊,請參考 Laravel Sail 的完整說明文件。
選擇 Sail 服務
When creating a new Laravel application via Sail, you may use the with
query string variable to choose which services should be configured in your new application's docker-compose.yml
file. Available services include mysql
, pgsql
, mariadb
, redis
, memcached
, meilisearch
, typesense
, minio
, selenium
, and 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
IDE 支援
在開發 Laravel 專案時,可以自由選擇要使用什麼程式碼編輯器。不過,對 Laravel 與 Laravel 生態系統來說,PhpStorm 提供了最廣泛的支援,其中也包含了 Laravel Pint 支援。
此外,還有一個由社群維護的 Laravel Idea PhpStorm 外掛程式,提供了多種實用的 IDE 功能,如程式碼陳昇、Eloquent 語法補全、驗證規則的自動補全⋯⋯等。
接下來
現在,你已經建立好 Laravel 專案了,你可能會想知道接下來該學些什麼。首先,我們強烈建議你先閱讀下列說明文件來熟悉一下 Laravel 是怎麼運作的:
你想要如何使用 Laravel 也會影響學習的下一步。使用 Laravel 的方法不只一種,我們稍後也會來探索一下幾種使用 Laravel 的主要方法。
是 Laravel 新手嗎?請參考 Laravel Bootcamp (英語) 來瞭解 Laravel 框架。同時,我們也會帶領你建立你的第一個 Laravel 專案。
Laravel the Full Stack Framework
可以將 Laravel 當作全端框架使用。我們說「全端框架」,是指你會使用 Laravel 來將 Request 導向到專案中,並使用 Blade 樣板來轉譯前端界面,或是使用如 Inertia 這類的 SPA (單頁面應用程式,Single-Page Application) 混合技術。這種使用 Laravel 的方法是最常見的。而且,在我們看來,這也是最有效率的一種使用 Laravel 的方法。
若讀者就是這麼打算使用 Laravel 的,則可能會想看看有關前端開發、路由、View、或 Eloquent ORM 的說明文件。此外,你可能也有興趣想了解一下如 Livewire 或 Inertia 等由社群開發的套件。這些套件能讓你在使用 Laravel 作為全端框架的同時,還能享受到許多由 JavaScript SPA 提供 UI 的好處。
若要使用 Laravel 作為全端框架,我們也強烈建議你瞭解一下如何使用 Vite 來編譯網站的 CSS 與 JavaScript。
若想要有個起始點可以開始寫網站,請參考看看我們的官方專案入門套件。
Laravel the API Backend
也可以將 Laravel 作為 API 後端來提供給 JavaScript SPA 或手機 App 使用。舉例來說,你可以使用 Laravel 作為 Next.js App 的 API 後端來使用。在這種情況下,你可以使用 Laravel 來提供身份認證,並為 App 提供儲存與取得資料的功能,同時也能使用到 Laravel 的一些如佇列、E-Mail、通知⋯⋯等強大的功能。
若你打算這樣使用 Laravel,則可以看看有關路由、Laravel Sanctum、以及 Eloquent ORM 的說明文件。
需要使用 Laravel 後端與 Next.js 前端的入門 Scaffolding 嗎?Laravel Breeze 提供了 API Stack 以及一個 Next.js 的前端實作,能讓你快速上手。