Miles' Blog

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

PHP 的運作原理是先把 PHP 原始碼編譯成 opcodes 再開始進 Zend VM 和 CPU,這部分可以參考 2020 介紹 PHP 8 的簡報,裡面第 12 頁剛好有提到 PHP 從解析到進 CPU 的流程。

在討論 PHP 效能的時候,除了直接寫 benchmark 測試以外,還有另一個方法是查編譯出來的 opcodes 為何。而本篇文章的重點會是試著把 opcodes 抓出來,做些簡單的比較。

閱讀全文 »

PHP 的 isset()empty() 是解析變數常用的語言結構,兩者用法很接近,有時一不小心就會誤用。

這是一個老掉牙的主題,隨便 Google 都一堆比較文,官網也有描述它們的差異。但我還是決定重覆造輪子,主要是想把 array_key_exists() 函式拿來一起討論。

同場加映:??(Null coalescing operator)與 property_exists() 函式的比較

閱讀全文 »

以前就有看過 Kibana 的各種資料呈現功能。最近因工作需求,所以研究了一下 Kibana 用法,同時記錄這份筆記。

主要是因為手邊只有現成的 log 檔案,但沒辦法用簡單的 grep 指令來達成複雜的功能,因此才會參考 Kibana 的做法。

閱讀全文 »

PHPBrew 是國內 PHP 大神 c9s 所開發的,目的類似 nvm、rvm 或 pyenv,都是在做對應語言的直譯器下載編譯與切換的工具。

過去一直都是使用 brew install php 來安裝單一的 PHP 直譯器,因為維護的產品還沒遇到不同 PHP 版本的問題。但最近有需求要在 7.x 與 8.0 互相切換,在使用 brew link 有些情境下會失效,非常煩人,現在要準備改用 PHPBrew 了。

閱讀全文 »

物件導向程式設計,是在設計一個系統--用到多少類別,以及類別之間的關係。

類別圖(class diagram)可以用圖例的方法呈現類別之間的關係,正所謂一圖勝萬言,使用圖例表達類別的關係,比直接看程式碼來的清楚很多;因為類別圖很常用,所以學習物件導向程式設計,至少要懂得看類別圖。

閱讀全文 »
0%