Laravel 的安裝、通路、了解、上手。
Laravel 架構的一個基本使用。
1、使用 composer 建立項目
composer create-project --prefer-dist laravel/laravel blog
報錯1
[ErrorException]proc_get_status() has been disabled for security reasons
報錯2
[Symfony\Component\Process\Exception\RuntimeException] The Process class relies on proc_open
解決:
打開php.ini檔案,搜尋 disable_functions,找到如下類似内容:
disable_functions=passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_get_status....
找到 proc_get_status、proc_open 删除然後重新開機php服務;
或者:注釋掉這行;
# disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_get_status....
報錯3
Failed to enable crypto
failed to open stream: operation failed
解決
更換composer鏡像源,可以執行嘗試以下幾種:
更換成阿裡鏡像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
更換成Laravel China鏡像:
composer config -g repo.packagist composer https://packagist.laravel-china.org
更換成中國全量鏡像:
composer config -g repo.packagist composer https://packagist.phpcomposer.com
2、配置域名、然後去通路、出現如下表示安裝OK
報錯1:
UnexpectedValueException
The stream or file "../storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied
報錯2:
ErrorException (E_WARNING)
file_put_contents(../storage/framework/views/f5a79bdb17b116aa71ccd551417888a08e8480aa.php): failed to open stream: Permission denied
解決:
以上兩個都是 failed to open stream: Permission denied 意思是沒有權限
chmod -R 777 ./storage/
3、了解項目目錄
.env
.env.example
.gitattributes
.gitignore
artisan*
composer.json
composer.lock
package.json
phpunit.xml
readme.md
server.php
webpack.mix.js
app/
// 目錄包含應用程式的核心代碼。你應用中幾乎所有的類都應該放在這裡。稍後我們會更深入地了解這個目錄的細節。
bootstrap/
// 目錄包含引導架構并配置自動加載的檔案。
// 該目錄還包含了一個 cache 目錄,存放着架構生成的用來提升性能的檔案,比如路由和服務緩存檔案。
config/
// 目錄,顧名思義,包含應用程式所有的配置檔案。我們鼓勵你通讀這些檔案,以便幫助你熟悉所有可用的選項。
database/
// 目錄包含資料填充和遷移檔案。你還可以把它作為 SQLite 資料庫存放目錄。
public/
// 目錄包含了入口檔案 index.php,它是進入應用程式的所有請求的入口點。
// 此目錄還包含了一些你的資源檔案(如圖檔、JavaScript 和 CSS)。
resources/
// 目錄包含了視圖和未編譯的資源檔案(如 LESS、SASS 或 JavaScript)。
// 此目錄還包含你所有的語言檔案。
routes/
// 目錄包含了應用的所有路由定義,
// Laravel 預設包含了幾個路由檔案:web.php、api.php、 console.php 和 channels.php。
// web.php 檔案包含 RouteServiceProvider 放置在 web 中間件組中的路由,
// 它提供會話狀态、CSRF 防護和 cookie 加密。
// 如果你的應用不提供無狀态的、RESTful 風格的 API,則所有的路由都應該在 web.php 檔案中定義。
// api.php 檔案包含 RouteServiceProvider 放置在 api 中間件組中的路由,它提供了頻率限制。
// 這些路由都是無狀态的,是以通過這些路由進入應用請求旨在通過令牌進行身份認證,并且不能通路會話狀态。
// console.php 檔案是定義所有基于閉包的控制台指令的地方。
// 每個閉包都被綁定到一個指令執行個體并且允許和指令行 IO 方法進行簡單的互動。
// 盡管這些檔案沒有定義 HTTP 路由,但它也将基于控制台的入口點(路由)定義到應用程式中。
// channels.php 用來注冊你的應用支援的所有的事件廣播管道的地方。
storage/
// storage 目錄包含編譯的 Blade 模闆、基于檔案的會話和檔案緩存、以及架構生成的其他檔案。
// 這個目錄被細分成 app、framework 和 logs 三個子目錄。
// app 目錄可以用來存儲應用生成的任何檔案。
// framework 目錄用來存儲架構生成的檔案和緩存。
// logs 目錄包含應用的日志檔案。
tests/
vendor/
// 目錄包含了你的 Composer 依賴包
4、資料遷移
參考位址:https://learnku.com/docs/laravel/5.5/migrations/1329
資料庫遷移就像是資料庫的版本控制,可以讓你的團隊輕松修改并共享應用程式的資料庫結構。
遷移通常與 Laravel 的資料庫結構生成器配合使用,讓你輕松地建構資料庫結構。
如果你曾經試過讓同僚手動在資料庫結構中添加字段,那麼資料庫遷移可以讓你不再需要做這樣的事情。
4.1、生成遷移檔案
使用 Artisan 指令 make:migration 來建立遷移:
php artisan make:migration create_users_table
新的遷移檔案會被放置在 database/migrations 目錄中。
每個遷移檔案的名稱都包含了一個時間戳,以便讓 Laravel 确認遷移的順序。
4.2、修改遷移檔案
遷移類通常會包含兩個方法:up 和 down。
up 方法可為資料庫添加新的資料表、字段或索引,而 down 方法則是 up 方法的逆操作。
主要字段:https://learnku.com/docs/laravel/5.5/migrations/1329#columns
public function up()
{
Schema::create(\'users\', function (Blueprint $table) {
$table->id();
$table->string(\'name\')->comment(\'使用者名\');
$table->string(\'pwd\')->comment(\'使用者密碼\');
$table->enum(\'status\', [\'1\', \'2\', \'3\', \'4\'])->default(\'1\')->comment(\'狀态:1注冊 2激活 3違規 4登出 預設:1注冊\');
$table->timestamp(\'last\')->comment(\'最後一次登入時間\');
$table->timestamps();
});
}
4.3、運作遷移檔案、生成資料表
php artisan migrate
5、控制器、模型層
除了在路由檔案中以閉包的形式定義所有的請求處理邏輯外,還可以使用控制器類來組織此類行為。
控制器能夠将相關的請求處理邏輯組成一個單獨的類。
控制器被存放在 app/Http/Controllers 目錄下。
建立對應的控制器:
php artisan make:controller UsersController
建立對應的模型層:
php artisan make:model Users
如果你使用了路由模型綁定,并且想在資源控制器的方法中使用類型提示,你可以在生成控制器的時候使用如下指令:
php artisan make:controller UsersController --resource --model=Users
6、路由
所有的 Laravel 路由都在 routes 目錄中的路由檔案中定義,這些檔案都由架構自動加載。
routes/web.php 檔案用于定義 web 界面的路由。
這裡面的路由都會被配置設定給 web 中間件組,它提供了會話狀态和 CSRF 保護等功能。
routes/api.php 檔案中的路由都是無狀态的,并且被配置設定了 api 中間件組。
大多數的應用建構,都是以在 routes/web.php 檔案定義路由開始的。
可以通過在浏覽器中輸入定義的路由 URL 來通路 routes/web.php 中定義的路由。
6.1、基本路由
1、建構基本路由隻需要一個 URI 與一個 閉包 ,這裡提供了一個非常簡單優雅定義路由的方法:
// 通路:http://www.a.cc/first
Route::get(\'/first\', function () {
return \'Hello World\';
});
2、綁定指定的控制器與方法
// 通路: http://www.a.cc/user
Route::get(\'/user\', \'UserController@index\');
3、傳回視圖層檔案
// 通路:http://www.a.cc/show
// view中參數1、必填、指定模版的名稱
// view中參數2、可選、數組類型、
Route::get(\'/show\', function(){
return view(\'Users.login\', [\'name\'=>\'名字\'] );
});
6.2、可用的路由的方法
路由器允許你注冊能響應任何 HTTP 請求的路由:
Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
有的時候你可能需要注冊一個可響應多個 HTTP 請求的路由,這時你可以使用 match 方法,也可以使用 any 方法注冊一個實作響應所有 HTTP 請求的路由:
Route::match([\'get\', \'post\'], \'/\', function () {
//
});
Route::any(\'/\', function () {
//
});
剩下的有時間在寫。。。。。