2022 年 12 月 8 號 PHP 8.2 發布了,這是 PHP 8 的第二次重大更新。從 2020 年開始,PHP 維持著每年更新一個次版本的進度,2020 年 11 月的 8.0,2021 年 11 月推出了 8.1。
作為最熱門的 PHP 框架,Laravel 9 及 10 都支援 PHP 8.2,如果還在使用 Laravel 8 及以前的版本,最多只支援到 8.1。
那我們話不多說,趕緊來看一下 PHP 8.2 有哪些重大的調整吧。
2022 年 12 月 8 號 PHP 8.2 發布了,這是 PHP 8 的第二次重大更新。從 2020 年開始,PHP 維持著每年更新一個次版本的進度,2020 年 11 月的 8.0,2021 年 11 月推出了 8.1。
作為最熱門的 PHP 框架,Laravel 9 及 10 都支援 PHP 8.2,如果還在使用 Laravel 8 及以前的版本,最多只支援到 8.1。
那我們話不多說,趕緊來看一下 PHP 8.2 有哪些重大的調整吧。
在黑白畫面打幾行指令,東西就跑出來了,在外人眼中看起來是相當的酷炫的行為。
而 Laravel 就提供了一個這樣的工具。
這個工具叫做 Artisan,它提供了一個方便的命令列介面(CLI)指令工具,讓開發者可以方便地執行指令,例如 Controller、 Model 的創建,或是執行 migrate,也可以用來啟動排程 schedule。
學會 Artisan,可以將許多重複的瑣事轉換成自動化的行為,有助於提升開發效率,並減少錯誤的發生。
你有沒有想過要主動找老闆爭取加薪或反映不合理的制度?
很多時候,員工對公司或團隊上的安排、制度,會有一些埋怨,但卻對於主管感到權威,不敢表達,只能悶在心裡,讓自己不舒服。
但我認為現在的時代跟以前不一樣了,尤其在資訊軟體產業,大部分的主管都願意傾聽下屬的意見,所以我倒覺得大家都可以試著找主管反映自己的想法。
其實很多主管都沒有想過要定期找下屬聊聊,或是沒有把這件事的優先序放在前面,但這件事情在很多外商或是比較開放的台商其實是非常例行性的工作,會安排所謂的一對一會議(1 on 1 meeting),來定期的安排主管與下屬的對談。
工作這麼多年了,經常在思考,究竟資深的軟體工程師該是什麼樣子?只要年資夠久就能稱得上是資深工程師嗎?只要有足夠的技術能力就是資深工程師嗎?我想每個人心目中都有一個資深工程師該有的樣子吧?
這篇文章主要聊聊我自己對資深工程師的想像,除了是我認為該有的樣子,也是我個人努力的方向。以一個團隊的角度來看,作為團隊中的資深工程師應該要有什麼樣子?我覺得可以從開發能力、溝通能力、工作態度幾個面向來看。
目前軟體開發方法中有兩大流派,分別為瀑布式跟敏捷式。
瀑布式是比較早發展出來的開發模型,敏捷則是近十年來被大力的提倡。有許多公司或團隊,以採用敏捷開發做為賣點,認為敏捷可以打造出更好的產品,或是加快軟體開發速度,所以敏捷比瀑布式開發還要好。
但我們要理解,每一種方法論都有其適合的情境,並無絕對的優劣,例如,敏捷適合於需求不清、變動快速的場景,而相對的瀑布式開發也有其優缺點跟適合的情境。
本篇為 PHP 系列
Laravel Collection 底層主要的資料結構是 PHP Array,也就是陣列。但 Laravel 透過 Collection 類別,將陣列進行封裝後,提供了比單純的陣列更加流暢 (fluent) 及更便利的用法。
另一方面,在 Collection 的設計概念中,也借用了部分函式語言程式設計 (Functional Programming) 的想法,因此學習 Collection 也替開發者帶來不同的思維模式。
Collection 完整名稱:
Illuminate\Support\Collection
先來看一個 Collection 的簡單應用:如何把 Array 中的每個值都乘以 2?
如果是傳統的陣列,可以這樣做:
$array = [1, 2, 3, 4];
for ($i = 0; $i < count($array); $i++) {
$array[$i] = $array[$i] * 2;
}
在陣列的範例中,開發者要自己處理迴圈的計數,也要自己取出值,乘以二後再寫回陣列。雖然不難,但有很多細節要留意。
而在 Collection 則可以這樣做:
$collection = collect([1, 2, 3, 4]);
$collection = $collection->map(function($value) {
return $value * 2;
});
雖然以這兩個範例來說,程式碼的量差不多,但在 Collection 的範例中,開發者不用自己處理迴圈,也不用花心力在值的取出與寫入,可以更專注在實際要做的事情。
本篇為 PHP 系列
PHP 的 Array 很方便也很彈性使用,當我們想要對 PHP Array 做迴圈的時候,比較常用的兩種做法是 for 及 foreach。而在大部分的情況下,foreach 是比較建議使用的方式。
本文會針對 PHP Array 的用法稍作說明,然後解釋 for loop 及 foreach 的用法,如果你已經熟悉 Array 用法可以直接跳到後面。
PHP 中的 Array,也就是陣列,是由成對的 key 和 value 所組成的資料結構。 key 在大部分情況下可以是任意字串或數字。
array(
key => value,
key2 => value2,
key3 => value3,
...
)
本篇為 PHP 系列
一支程式的效能有幾個重要的指標,其中一個是記憶體用量,之前的文章中有介紹過如何衡量記憶體用量,而今天這一篇文章要介紹的則是另一個重要指標:執行時間。
要如何測量程式的執行時間?其實原理很簡單,只要記錄開始時間跟結束時間,然後以後者減去前者就好了。
在 PHP 中有 time()、microtime 及 hrtime 可以用來取得目前時間,而這三者的主要差別在於時間的精細度。
如同標題,我的上一支手機是 Google Pixel 3。我是在 2019 年 1 月購入,實際使用到 2022 年 9 月,用了將近四年。以現代手機來說,一台手機可以用四年已經超乎預期了。
但手機用久了還是會老化,總是會有效能消退、電池壽命或其他小故障等等問題。結論就是,我的 Pixel 3 電池已經不行了,即便只是輕度上網,基本上撐不過三小時。畢竟硬體已經隔了這麼久,很多程式越來越吃資源,要維持同樣的效能,CPU 只能用更高功率運作,我認為這即便換電池也沒辦法改善了。
在一個開發團隊裡面,通常怎樣的人會被升任為主管?以一般直覺來講,通常是開發能力最強的那一個。其實這樣的決策看似合理,但卻有盲點存在。你可能會想問,找一個開發能力最強、最獲得眾人信任的人來擔任主管,這有什麼問題嗎?
再談論這個問題之前,我們先來聊聊什麼是彼得原理。
根據維基百科,彼得原理的定義如下:
在組織或企業的等級制度中,人會因其某種特質或特殊技能,令他被擢升到不能勝任的高階職位,最終變成組織的障礙物(冗員)及負資產。
大家在工作的時候,是否經常覺得主管很無能?或是沒辦法認同主管的決策或做事方式?這並不是你的錯覺。
本篇為 PHP 系列
PHP 魔術方法是一群專門給 PHP 物件使用的特殊方法,這些魔術方法會在一些特殊的情況被觸發,就好像變魔術一樣,對於魔術方法不熟悉的開發者,可能會相當錯愕。
然而,在熟悉魔術方法後,開發者可以透過複寫 (override) 這些魔術方法來改變 PHP 物件的預設行為,進而達到更靈活的運用,藉此設計更多良好的程式。
PHP 的魔術方法有十幾個,本篇整理了一些常用的魔術方法。未來也會繼續新增。