天天看點

Laravel 入門

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

Laravel 入門
報錯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 () {
    //
});
           
剩下的有時間在寫。。。。。