安裝 Laravel
composer create-project laravel/laravel laravel # "5.8.*" 指定版本 || 最新
# laravel 擁有豐富的功能,代價是需要安裝很多擴展文件
#(composer會將相關的依賴都安裝在vendor下)
文檔:https://learnku.com/docs/laravel/6.x/installation/5124
文件夾結構
框架的目錄結構都大同小異:
入口(/public)、配置(/config)、應用(/app)、擴展(/vendor)、緩存(/storage vs /runtime)等等..
入門階段只需注重業務開發 (/app),但MVC結構較爲隨性,按照自己理解定義即可~~
文檔:https://learnku.com/docs/laravel/6.x/structure/5126
配置
所有 Laravel 框架的配置文件都放置在 config
目錄下。拿數據庫配置爲例(database.php):
<?php
# env() 會讀取根目錄下.env 文件對應的值,第二個參數是默認值。
# 這樣的目的是方便不同環境的配置(.env文件不要上傳到git)。
'default' => env('DB_CONNECTION', 'mysql'),
文檔:https://learnku.com/docs/laravel/6.x/configuration/5125
強悍的 artisan
# 如果不想使用apache\nginx,可以使用larvel自帶的服務器 serve (一般用於測試) php artisan serve --port 8080 # 數據遷移,相當於數據庫的版本控制,生成文件位於 /database/migrations php artisan migrate:install # 爲了方便開發,還有賊多的命令用於提高效率,看看還有哪些->_-> php artisan list
文檔:https://learnku.com/docs/laravel/6.x/artisan/5158
請求週期
訪問 public/index.php
入口文件時,larevel 處理的大致流程:
index.php
文件載入 Composer 生成的自動加載器定義,並從bootstrap/app.php
文件獲取到 Laravel 應用實例。傳入的請求會被髮送給 HTTP 內核或者 console 內核,完成在請求被處理前需要完成的工作。
所有的請求必須在處理前通過 HTTP 中間件 列表的中間件,最重要的動作之一就是載入 服務提供者 到你的應用。
一旦應用完成引導和所有服務提供者都註冊完成,
Request
將會移交給路由進行分發。服務提供者是 Laravel 應用的真正關鍵部分,應用實例被創建後,服務提供者就會被註冊完成,並將請求傳遞給應用進行處理,真的就是這麼簡單!
文檔:https://learnku.com/docs/laravel/6.x/lifecycle/5130
路由
訪問 /public/index.php 入口文件 經過一系列加載與註冊事件之後,請求將移交路由進行分發處理。
如默認訪問的歡迎頁也是經過路由 /routes/web.php 分配的:
Route::get('/', function () { // view 指向 /resources/view/welcome.blade.php return view("welcome"); });
第一個參數是路由路徑,第二個參數是回調方法,也可以直接指向 控制@方法:
// 第二個參數指向 命名空間/IndexController 控制器下的 say 方法 Route::get("test","/app/Http/Controller/Test/IndexController@say"); // 默認命名空間已包含 'App\Http\Controllers' ,所以一下寫法等效 Route::get("test","Test/IndexController@say");
文檔:https://learnku.com/docs/laravel/6.x/routing/5135
控制器
控制器位置一般位於 /app/Http/Controller/ ,,可建立文件夾分類存放,但要注意命名空間。
# 新建控制器的快捷方法:
php artisan make:controller Test/IndexController --resource
# 此命令將在 /app/Http/Controller/Test/ 下創建 IndexController.php 文件,
# --resource 會幫助新建多個常用資源操作的方法。
文檔:https://learnku.com/docs/laravel/6.x/controllers/5138
視圖
視圖文件位置一般位於 /resources/view/ 下,可建立文件夾分類存放
模版引擎的邏輯都大同小異,只是定義的標籤寫法不一樣而已。
文檔:https://learnku.com/docs/laravel/6.x/views/5141
數據遷移
laravel 並不建議直接創建表,而是使用其提供的 artisan migrate 建表,其可方便版本控制(表處理sql都會被保存)及數據遷移合併。
# 在 /database/migrations/ 下已有兩個測試table文件,直接運行
php artisan migrate
# 會成功創建 3 個表(其中一個是創建日誌表 migrations)
# 需要創建其它表時,先在 /database/migrations/ 生成 table 文件,
# 然後再運行創建命令 php artisan migrate
# 創建 table 文件也有快捷的命令,如創建 tests 表
php artisan make:migration create_tests_table 即可
# 爲什麼laravel的表一般都要加 s ?模型下有說明
相關文章:https://blog.csdn.net/king2wang/article/details/80414828
模型
# 像創建 控制器、migrations 一樣,也可以直接使用 artisan 創建model:
php artisan make:model Test
# 其創建的模型位於 /app 下,對應的表是 Tests 而不是 Test!!
# 模型對於每個開發人員都有不同的理解,所以其位置由開發者根據自己的見解進行處理。
文檔:https://learnku.com/docs/laravel/6.x/eloquent/5176
tinker
進入交互模式,直接編寫php代碼進行調試,如
$ php artisan tinker
>>> $test = new \App\Test();
>>> $test->name = "hello world!"
>>> $test->save();
=> true
# 成功插入數據
文檔:略
laravel 基礎入門之後,其它的邏輯和其它輕量級框架也差之不多了,多讀文檔、多嘗試、多幾次實際開發 laravel 就成功上手~