Home avatar

Miles Chou

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

分析 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 的這行程式碼才會送出:

分析自定義錯誤頁

官方有提到自定義錯誤頁可以如何簡單達成。遇到的問題是,想自定義錯誤頁,並在 debug 模式下,當隨意丟例外的時候,要在頁面某個地方列出 call stack trace。

從今天開始,會開始換來分享實作功能中遇到問題,而去追原始碼的過程。不知道能持續多久,就繼續寫吧!

結論先講:這無法單純使用自定義錯誤頁實作出來的,需要客製化某些程式才有辦法做。因為只是 debug 要用,所以就立馬放棄了。

文件有提到自定義錯誤頁會接到 abort() 函式產生的 HttpException 並注入頁面的 $exception 變數。