再看 tap()
tap() 之前有提過,是 helpers.php 的方法之一。
分析 Collection(3)--Higher Order Messages
Higher Order Messages 是一個像魔法一般的功能。
來看看官方提供的範例:
分析 Collection(2)
先大概列幾個與原生 PHP 函式相關的方法。
| Native | Collection |
|---|---|
| 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 處理的方便性,這些就不多做說明,來提一些比較有趣的。
transform()
這個方法跟 map() 其實是一樣的,但它會改變原本的物件的內容:
分析 Collection(1)
來看看 Collection 吧!
Laravel 用來處理 array 的小幫手,至今已知道有三種類型:第一種就是 [helpers.php][] 所提供的函式,第二種則是 Arr 類別所提供的靜態方法,今天要講的是第三種--Collection。
Collection 與原生 PHP 函式之間的關係
這三種方法之間都有類似的處理方法。不過,我們先來看 Collection 哪些方法跟原生 PHP 提供的函式很像,如 array_map() 函式與 Collection::map() 方法:
array_get()、data_get() 與 object_get() 的差異
這三個都是 Laravel 所提供的 helpers 函式。剛好今天聽到有人提到這個問題,所以就來翻看看。
單就註解與介面來看這三個函式:
自定義 bootstrapper
不同公司所制定的系統環境規範都有所不同。
比方說環境變數的設定,敝公司的規範如下:
- 不設定系統環境變數
/etc/environment,而是使用檔案載入 - 系統人員將會把檔案放在
/path/to/.env - 部分的環境設定系統人員不清楚,會由開發人員設定。換句話說,還有另一個 env 是跟著專案跑的。
上述會有幾個要點要注意:
- Laravel 預設只有載入
/path/to/project/.env,而上面的規範,還會多載/path/to/.env - 系統人員設定的
.env開發人員不能隨意覆蓋
很直接的 Workaround
最一開始,使用最蠢的 workaround,直接修改 bootstrap/app.php:
如何正確地在 Response 加 Header(2)
續昨天,先來列一下 Http Kernel 預設有哪些 middleware:
如何正確地在 Response 加 Header(1)
前一陣子,朋友在社群分享小知識。
$routeMiddleware 裡面的 middleware 加上 $header 的話會有問題,要在 $middleware 宣告才能保證生效
因為剛好正在研究 Laravel 原始碼,所以就認真翻了一下。
Response header 是在分析 bootstrap 流程有提到 index.php 的這行程式碼才會送出: