※ 引述《pracinverse (改)》之銘言:
: 最近看到PHP的一種用法就是在a.php的最後一行才requrie(b.php);
: 看起來是因為前人想要在a.php裡面先做一些處理後,再去用到b.php的功能,
: 而這種很不OO的方式來做code reuse實在讓我覺得不太習慣,
: 一來一般programming language都是在最一開始去把需用到的其他file include進來,
: 二來要code reuse應該要包成class才能達到封裝的目的。
: 這種"在a.php的最後一行requrie(b.php);"的用法
: 在PHP裡面算是很常見的用法嗎??
: 它算不算一種不好的practice呢?
這很爛,但當年寫出這種 code 的人不是傻,是沒有招可以出
PHP 到 2009 年才有 namespace,autoloading 的規範 PSR-0 是 2010 還 2011 的事
2012 年才有 composer 這個套件管理系統(以前有pear,但得動到系統...)
在那之前,你就算 OO 了你也很難組織你的 code 該怎麼放或啥時載入
而人家寫好的 lib 你得透過一連串的 include 地獄來載入
所以會看到一些現在看起來莫名其妙的做法,例如
- include 一個會 include 幾十個檔案的 php
(不容易有效的載入 lib,於是搞出個類似 .h 檔的東西...)
- 滿天飛的 global
(沒辦法用 namespace 去區隔 class,不如全部先在一個地方先 new 出來備用)
- 為了確保邏輯重用,每個地方都 include 同一個 php
(不知道怎麼 call 同一個 class 的某個 function,或是沒有現代 framework 輔助)
過去 PHP 名聲臭是有原因的,人家已經在21世紀了,PHP 還在打二戰...
composer 出現之後沒幾年,PHP 已經脫胎換骨,變成符合 21 水準的超級 PHP。
然而程式碼被汰換的速度跟不上這超英趕美大躍進
除非能短短兩三年就把整間公司的 code 全部打掉重來...
這是一場 PHP 的文化大革命