---
# System prepended metadata

title: Laravel
tags: [Laravel]

---

# Laravel
## Laravel 簡介
### 後端框架
Laravel是一套基於[MVC架構](https://hackmd.io/@SiriusLab/Sk8EZlKPJg)的網頁應用程式框架，
其理念是讓開發過程愉悅且富有創造性。

Laravel所涵蓋的技術領域廣大，
在其運作過程中包含許多知識應用，
以一般電商網站為例：
當使用者(Client)在瀏覽器(Browser)連線(HTTPS)到網站時，
瀏覽器經過域名系統(DNS)對輸入的網域(Domain)進行解析以獲取IP位址，
導向'Laravel/public/index.php'後便開始啟動相關的函數(Function)，
然後路由(Route)決定瀏覽器向使用者呈現的首頁視圖(View)
`Route::get('/', function () {
    return view('index');
});`
而使用者在網站中各種需要與後端交互的行為皆由控制器(Controller)所管理。
任何需要與資料庫(Database)交互的動作皆透過控制器調用模型(Model)進行處理。


## Laravel 安裝步驟 
### 前置條件
*作業系統 Windows 11
使用環境 XAMPP*

### 安裝步驟
1. 在Windows中安裝 [Composer安裝工具](https://getcomposer.org/Composer-Setup.exe)。
2. 在Terminal中執行 `cd /xampp/htdocs`
3. 在Terminal中執行 `composer create-project laravel/laravel:^11.0 (專案名稱)`
4. 出現 "Application key set successfully." 時，代表安裝完成。

#### 備註
*指令 `cd` 擁有 change directory(改變目錄) 的意義。
htdocs擁有 host documents(主機文件) 的意義。
`laravel/laravel:^11.0` 的 `^` 代表指定的版本是11的最新版，不會安裝到10.X或12.X的版本。*

## Laravel 系統
### Composer 是什麼?
Composer是PHP的套件管理系統，它提供用於管理PHP軟體與依賴庫關係的標準格式。簡單地說，就是負責安裝套件。
`require` 向composer.json添加一個依賴庫，並且安裝它
`install` 從composer.json安裝依賴庫，通常在下載一個PHP專案的所有依賴時使用
`update` 根據composer.json中允許的版本範圍更新依賴庫
`remove` 刪除一個依賴庫，並將其從composer.json中移除
`self-update` 更新compsoer自身

### Artisan 是什麼?
Artisan是Laravel的一個CLI(指令列介面)的名稱，它本身除了負責產生 Model 與 Controller 之外，也允許開發者建立自訂的指令。

啟動Laravel測試伺服器
`php artisan serve`
**此時若關閉Terminal相當於關閉伺服器！*

查詢Artisan指令
`php artisan list`

新增controller
`php artisan make:controller (controller名稱)`
ex.`php artisan make:controller (AboutController)`

### Blade 是什麼?
簡單地說，Blade 就是 Laravel 所提供的樣版引擎。若網頁有重複的地方，可以使用 blade 的 @extends，將來要修改時就不用每個網頁都修改，只要修改一處即可。

### Namespace 是什麼?
為了解決套件衝突問題，PHP 5.3 提出了 "Namespace"，套件可以有自己的 Namespace，我們的專案可以有自己的 Namespace，只要在 Namespace 不相衝突的情況下，"class" 名稱相衝突是允許的。PHP 必須搭配 Namespace，才可以避免 class 名稱與套件的 class 名稱發生衝突的問題。

## XAMPP下的Laravel
### 伺服器配置
在XAMPP的環境裡，Apache的預設埠(Port)是80(HTTP),443(HTTPS)，當我們將Laravel專案安裝於XAMPP/htdocs後，必須設定路徑才能夠在使用URL時將網頁導向自己的Laravel專案。

在XAMPP Control Panel的Apache Config選擇httpd.conf，然後透過 Ctrl+F 搜尋 `DocumentRoot` 找到
`DocumentRoot "C:/xampp/htdocs"`
`<Directory "C:/xampp/htdocs">`
將這兩行的路徑改為
`DocumentRoot "C:/xampp/htdocs/(自己的專案目錄)/public"`
`<Directory "C:/xampp/htdocs/(自己的專案目錄)/public">`
這裡的 `public` 代表的是網站的起點、程式的入口，所有公開的資料都會放在這個資料夾，例如:首頁、文字、圖片等。

可依需求更動配置的檔案包含但不僅限於:
- /.env
- /config/app.php
- /config/database.php