php

A collection of 3 posts
PHP/後端工程師學習與面試指南
backend

PHP/後端工程師學習與面試指南

前言 每位後端工程師的工作資歷、工作環境與學習經歷都不一樣,大家心中對於後端工程師應該具備什麼技能、學習路線規劃和程度上 Junior/Senior 的定義也不相同。 本文旨在分享筆者個人在這幾年在軟體開發一路上學習路線的經驗,與近幾年累計大約超過百人以上的面試經歷提供大家在學習路線和未來面試過程中有個參考依據。 文章標題命名為 PHP/後端工程師主要是個人工作經歷上習慣使用的主要語言為 PHP,但是本文的內容也能適用在其他後端語言(如:NodeJS, Golang, Python 等),應該說 PHP 和其他語言的工程師除了使用語言的表層差別外,本質上在 Web 中所面臨與要解決的後端問題其實相去不遠。 工程師職級定義 在不同行業或公司中對於工程師 Junior 與 Senior 定義的標準都不相同,為了對齊下面段落中對於職級標準,本文借用 Avance Venture Lab 所分享的工程師職級定義,由比較抽象的層次來定義不同職級的標準: avancevl.github.io/_main/people/engineering_level.md at master ·
18 min read
在 PHPUnit 中測試 protected 和 private 方法
php

在 PHPUnit 中測試 protected 和 private 方法

前言 就理論上沒有理由要針對已封裝的方法進行測試,對於那些 protected 和 private 方法一般會採取間接的測試方法。意即透過測試 public 方法來驗證裡面所呼叫的封裝方法是否符合預期邏輯,而對外部使用者來說,針對 public 方法的單元測試便會順便包含到這些封裝方法的測試,封裝方法本身就是 public 方法的一部分,他們也不需要去分辨哪些是封裝過的邏輯,因為只需要關注 public 方法即可。 封裝本身代表著:針對外部使用者本來就不需要了解,也根本不了解的成員或方法進行隱藏。單元測試本身就是模擬外部使用者的動作,那當然也只需要對測試目標 public 的方法進行模擬與驗證。 如果你發現測試 public 方法無法協助你測到所有想測試的封裝方法,大部分代表在設計本身上就有問題或是那些 protected 和 private 方法在現階段是沒有必要的,屬於 over design。 這其實也是 TDD 提倡的精神,如果全部的測試都符合預期,就代表功能完成了。而且按照測試來撰寫的程式,幾乎不會出現測試無法涵蓋的程式,因為程式本來就是為了滿足測試而撰寫的。
3 min read