Home avatar

Miles Chou

天涯何處無幹話,何必要講實務話

Lumen 簡介

與 Laravel 類似地,Lumen 也是被拆成 LumenLumen Framework 兩部分。而 Lumen Framework 則是使用第一天提到的 Illuminate 套件實作出來的。

最近幾天會來研究一下 Lumen 怎麼使用 Laravel 抽離出來的套件,會使用 v5.7.6 版,從 src 目錄可以知道 Lumen Framework 客製化的套件庫樣貌:

分析 Collection(2)

先大概列幾個與原生 PHP 函式相關的方法。

NativeCollection
array_chunk()chunk()
array_combine()combine()
array_diff()diff()
array_flip()flip()
array_filter()filter()
array_map()map()
array_reduce()reduce()
array_slice()slice()
array_walk()each()

通常 Collection 的實作,都有加強原生對 array 處理的方便性,這些就不多做說明,來提一些比較有趣的。

這個方法跟 map() 其實是一樣的,但它會改變原本的物件的內容:

分析 Collection(1)

來看看 Collection 吧!

Laravel 用來處理 array 的小幫手,至今已知道有三種類型:第一種就是 [helpers.php][] 所提供的函式,第二種則是 Arr 類別所提供的靜態方法,今天要講的是第三種--Collection

這三種方法之間都有類似的處理方法。不過,我們先來看 Collection 哪些方法跟原生 PHP 提供的函式很像,如 array_map() 函式與 Collection::map() 方法:

自定義 bootstrapper

不同公司所制定的系統環境規範都有所不同。

比方說環境變數的設定,敝公司的規範如下:

  1. 不設定系統環境變數 /etc/environment,而是使用檔案載入
  2. 系統人員將會把檔案放在 /path/to/.env
  3. 部分的環境設定系統人員不清楚,會由開發人員設定。換句話說,還有另一個 env 是跟著專案跑的。

上述會有幾個要點要注意:

  1. Laravel 預設只有載入 /path/to/project/.env,而上面的規範,還會多載 /path/to/.env
  2. 系統人員設定的 .env 開發人員不能隨意覆蓋

最一開始,使用最蠢的 workaround,直接修改 bootstrap/app.php

如何正確地在 Response 加 Header(1)

前一陣子,朋友在社群分享小知識。

$routeMiddleware 裡面的 middleware 加上 $header 的話會有問題,要在 $middleware 宣告才能保證生效

因為剛好正在研究 Laravel 原始碼,所以就認真翻了一下。

Response header 是在分析 bootstrap 流程有提到 index.php 的這行程式碼才會送出: