laravel 學習之路 控制器Controller
- 2019 年 12 月 19 日
- 筆記
前面學習了路由可以分發請求還可以引入html頁面,這些都可以在 route/web.php 中搞定。
但是如果項目設計的業務很繁雜,都寫在路由里會非常臃腫難以維護,於是今天的主角 Controller 控制器的價值就很明顯了,把業務邏輯寫在控制器中,路由只負責轉發請求到控制器。
創建控制器
都9102年了既然用上了現代話框架必須玩點高逼格的方式使用命令行的方式創建控制器
- laravel 是一個現代化框架,它對命令行有著非常好的支援,artisan 就是 laravel 的命令行介面
- 我們可以把它理解為命令行級的單入口文件,跟 index.php 文件的使命一樣,所有命令都需要通過他,所有如果需要使用命令行就需要 cd 到項目根目錄去或者指定一長串路徑這個看個人喜好了up是喜好到根目錄去。
- 使用很簡單 php artisan 起手 後面跟上響應的命令,在命令行中以 php 開頭意思是用 php 來執行某個文件,php index.php 意思就是使用 php 的命令行模式運行 index.php 。
- 命令行下是可以不需要文件後綴就能識別的所以根目錄下的 artisan 文件並沒有帶上 .php
好了讓我們用 php artisan 來創建控制器在項目根目錄執行下列程式碼 php artisan make:controller TestController
如果最近沒做壞事,洗過臉的話會看到成功的提示
<?php namespace AppHttpControllers; use IlluminateHttpRequest; class TestController extends Controller { // }不但自動創建了文件還定義了命名空間並且繼承好了父級控制器,這樣我們直接寫CURD就好了
接下來我們給上面的命令加個 --resource 選項 php artisan make:controller TestController --resource 如果直接運行的話是會報錯提示Controller already exists!
這是因為我們剛已經創建過 TestController了,所以我們需要進入項目根目錄執行下面的命令把剛剛創建的文件刪除掉 cd app/Http/Controllers/ && rm -rf TestController.php 刪除掉後再回到項目根目錄執行剛剛的命令
如果人品正常,那麼會再次生成一個 app/Http/Controllers/TestController.php 文件,打開會是這個樣子
<?php namespace AppHttpControllers; use IlluminateHttpRequest; class TestController extends Controller { /** * Display a listing of the resource. * * @return IlluminateHttpResponse */ public function index() { // } /** * Show the form for creating a new resource. * * @return IlluminateHttpResponse */ public function create() { // } /** * Store a newly created resource in storage. * * @param IlluminateHttpRequest $request * @return IlluminateHttpResponse */ public function store(Request $request) { // } /** * Display the specified resource. * * @param int $id * @return IlluminateHttpResponse */ public function show($id) { // } /** * Show the form for editing the specified resource. * * @param int $id * @return IlluminateHttpResponse */ public function edit($id) { // } /** * Update the specified resource in storage. * * @param IlluminateHttpRequest $request * @param int $id * @return IlluminateHttpResponse */ public function update(Request $request, $id) { // } /** * Remove the specified resource from storage. * * @param int $id * @return IlluminateHttpResponse */ public function destroy($id) { // } }怎麼樣逼格高吧,不但增刪改查的方法都定義好了,連注釋都寫好了,這其實是按 RESTful 規範生成的格式。
