# 建立Laravel框架環境
## :memo:事前作業
請先自行安裝以下軟體:
1.[XAMPP](https://www.apachefriends.org/zh_tw/index.html)(內含PHP、Apache、MariaDB、PHPMyAdmin),此筆記安裝版本為7.4.12。
2.[Visual Studio Code](https://code.visualstudio.com/)
## Step.1 安裝composer
請至[composer](https://getcomposer.org/)官方網站下載,選擇download,下載最新版本的composer。
安裝步驟:
1.選擇Install for all users(recommended)

2.不用勾選developer mode,點選Next

3.路徑為預設,不用變更,點選Next

4.不用勾選,也不用輸入url,點選Next

5.點選Install

6.按Finish結束安裝

7.重新開機後在終端機輸入以下指令,如有成功跑出版本號碼即為成功安裝。
```
composer
```

## Step.2 設定PHP設定檔
至自己安裝PHP的目錄下找到"php.ini-development"的檔案,複製一個並更改名稱為"php.ini"在同一目錄底下。
## Step.3 安裝Laravel
首先要先利用composer下載laravel的安裝包,在命令提示字元底下輸入以下指令:
```
composer global require laravel/installer
```

完成後在第一行會顯示安裝在哪一個目錄底下,輸入"laravel -v"就會看到目前安裝的版本了。
```
laravel -v
```

接下來有兩種方式可以建立laravel專案:laravel或是composer。而利用laravel的安裝方式會比較快。
## Step.4 建立專案
### 使用laravel建立專案
將目錄移至你要建立laravel專案底下,執行以下指令:
```
laravel new 資料夾名稱
```

新增完成後,移動至該資料夾裡面,執行下列指令:
```
@php artisan key:generate --ansi
```

該指令的意思是利用PHP去執行artisan的這個檔案,執行後會在專案裡的.env檔中的APP_KEY欄位建立一組新的加密字串。我們利用Visual Studio Code打開剛才建立的專案,並點選.env檔,會看到APP_KEY的地方產生了一組加密字串。

如果需要查看其他指令的話可以在終端機使用下列指令:
```
php artisan
```

使用下列指令會開啟一個server,並且會顯示server的IP位址,預設是127.0.0.1:8000,如果8000被佔用了則會自動遞增。建立成功的話,輸入該IP則會顯示laravel的頁面。
```
php artisan serve
```


### 使用composer建立專案
將目錄移至你要建立laravel專案底下,執行以下指令:
```
composer create-project laravel/laravel 資料夾名稱 --prefer-dist
```

使用composer建立專案的話就不用輸入指令去生成.env檔裡的APP_KEY了。
到這邊就算安裝laravel完成了!
## Step.5 了解laravel專案架構
### 我在哪裡?
在第一次進入首頁時,是呼叫了哪一個頁面呢?我們打開專案中的/routes/web.php,會看到下面的程式碼:
```php=16
Route::get('/', function () {
return view('welcome');
});
```
該程式碼的意思是,當在網址的後面加上"/"時,會導到/resources/views/welcome.blade.php。所以單純在網址的地方打上127.0.0.1:8000時,系統會自動將斜線加上去,而幫我們導到welcome.blade.php的這個畫面囉!
那麼今天我們在/resources/views裡建立一個叫home.blade.php的檔案,裡面寫上簡單的程式碼:
```php=1
<?php
echo "welcome home!";
?>
```
然後在/routes/web.php裡新增下列程式碼:
```
Route::get('/home', function () {
return view('home');
});
```
這樣當我們在網址列打上127.0.0.1:8000/home時,就能見到畫面上顯示"welcome home!"了!

:::warning
注意!當route裡面的名稱剛好在public的資料夾裡也有相同名稱的檔案時,網頁則會導向在public裡的那個網頁,不是route指向的那個網頁。
:::
### 我有好多個頁面都要顯示同一個東西,怎麼辦?
我們可以用"@extends('檔案名稱')"的方式引用別的檔案的程式。
首先,先在/resources/views裡建立一個名為navigator.blade.php的檔案,內容如下:
```php=1
這段文字來自navigator.blade.php的文字!
```
再來打開剛才的home.blade.php,改成下列程式碼:
```php=1
@extends('navigator')
我是來自home.blade.php的文字!!
```
打開網頁,在網址的地方輸入127.0.0.1:8000/home時,就會看到navigator.blade.php被放在home.blade.php裡面囉!

咦?怎麼最先引用的檔案會在比自己原本的程式還晚執行呢?這時候利用"@include"就可以讓引用的檔案先執行囉!
```php=1
@include('navigator')
我是來自home.blade.php的文字!!
```

這份教學就寫到這邊,如果要利用laravel框架進行PHP的資料庫使用,詳情請見下一篇,謝謝。
## 參考資料
[Progress Bar 進度條線上課程 laravel系列教學影片](https://www.youtube.com/watch?v=rFDcGBO4PWc)