PHP 動態呼叫函數(variable functions)與@see
前言:
我們無論在原生的PHP或者Laravel專案中經常會依據參數名稱不同而動態的去呼叫function名稱,例如像這樣
1 2 3 4 5 6 7 8 9 10 11 12 |
public function create(string $type,string $name) { $this->{'_'.ucfirst($type)}($name); } protected function _member(string $name) { } protected function _manager(string $name) { } |
透過create作為入口,將要create的類型與名字傳入,再依照傳入的類型呼叫不同的protected function來實際執行邏輯
這樣不僅是可以節省使用if else 或者 switch的複雜度,未來也比較好增加其他項目
但是這樣子寫一直有個問題,那就是編輯器無時無刻都在提醒 _member與_menager兩個function沒有被使用
這時候需要請出@see
1 2 3 4 5 6 7 8 9 10 11 12 |
public function create(string $type,string $name) { /** @see _member */ /** @see _meneger */ $this->{'_'.ucfirst($type)}($name); } protected function _member(string $name) { } protected function _manager(string $name) { } |
這時候就可以觀察到,編輯器對於這兩個protected function已經亮燈,代表又被使用過
也可以按住command用滑鼠點@see 可以直接跳到該function,方便後續排查問題