Laravel PHP

Laravel (4): Laravel 5.3 released & 重裝環境

商業,創業,美食,葡萄酒,閱讀,網路科技。

這是我的 FB粉專 以及 IG,我比較常使用 Threads,歡迎大家追蹤互動~

前陣子實在太忙了,以至於文章更新的頻率很低,而且乾貨不多。Laravel 5.3 release 了,希望藉這個機會重新 review 一次環境,升級到 PHP 7,並且開始使用 Laravel 5.3。

首先先記錄一下目前 Homestead 環境

Ubuntu 16.04 LTS
Nginx 1.11.1
MySQL 5.7.12
PHP 7.0.8

重裝了一台 server,環境是:
Ubuntu 16.04 LTS
Nginx 1.10.0
MySQL 5.7.13
PHP 7.0.8

一篇 PHP5 升級到 PHP7 的好文:
https://www.digitalocean.com/community/tutorials/how-to-upgrade-to-php-7-on-ubuntu-14-04

以下是開始使用 Laravel 5.3 的一些筆記:
* routers.php 改變位置。5.2 是在 /app/Http/routes.php,在 5.3 變成 /routes/web.php 和 /routes/api.php,普通頁面 route 寫在 web.php, api 寫在 api.php (他們是不同的 route group)

* php artisan make:auth 會新增/修改以下這些檔案:
    – /routes/web.php 會加上兩行

Auth::routes();
Route::get('/home', 'HomeController@index');

注意 Auth::routes() 在 5.2 是 Route::auth()。

    – 新增 /app/Http/Controllers/HomeController.php
    – 新增 /resources/views/layouts/app.blade.php
    – 新增 /resources/views/auth/login.blade.php

    – 新增 /resources/views/auth/register.blade.php
    – 新增 /resources/views/auth/password/email.blade.php
    – 新增 /resources/views/auth/password/reset.blade.php
    – 新增 /resources/views/home.blade.php

* 做完 php artisan migrate 會產生 users, password_resets 兩個 table, 一個最基本的登入系統就完成了,算是開發的起點。

* Errors & Logging。5.3 重新編排了官方文件,我個人覺得新的排版是比 5.2 好,其中它把 Errors & Logging 移到較上方的位置。Errors & Logging 提到 /config/app.php 裡有一行 ‘log’ => env(‘APP_LOG’, ‘single’),像 larry 習慣 daily log, 就可以改成 ‘log’ => env(‘APP_LOG’, ‘daily’),因為 .env 裡沒有 APP_LOG, ‘log’ 會被設定成 daily. 另外可以再下 ‘log_max_files’ => 30, daily log 的保留天數。然後你可以看一下 .env 的 APP_LOG_LEVEL.

https://laravel.com/docs/5.3/errors
“Monolog recognizes the following severity levels – from least severe to most severe: debug, info, notice, warning, error, critical, alert, emergency.”

當你的 log “嚴重於” APP_LOG_LEVEL 設定時,才會真的 log。所以當你上 production 時,可以將 APP_LOG_LEVEL 調高,可以 filter 掉一些 warning message。

另外可以看一下 /resources/views/errors, 裡面應該有一個 503.blade.php, http 503 error 時會自動導到這個頁面, 你也可以新增自己的 error handle page, 例如 404.blade.php


https://laravel.com/docs/5.3/container 有一段我覺得寫得很好,點出了 dependency injection loosely couple 的好處:

we are able to easily swap it out with another implementation. We are also able to easily “mock”, or create a dummy implementation of the UserRepository when testing our application.” 
(UserRepository is a service example)

在 5.2 教程中新增了 /app/Repositories/TaskRepository.php, 其中 class TaskRepository「直接」inject 到 TaskController constructor.

5.3 教程沒有完整範例,由 service container 頁面程式碼片段可以看出 UserRepository 是在 app/Repositories/UserRepository, 也是「直接」inject 到 UserController constructor.

商業,創業,美食,葡萄酒,閱讀,網路科技。

這是我的 FB粉專 以及 IG,我比較常使用 Threads,歡迎大家追蹤互動~