商業,創業,美食,葡萄酒,閱讀,網路科技。
這是我的 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
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 會加上兩行
– /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.
– 新增 /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.
商業,創業,美食,葡萄酒,閱讀,網路科技。