※ 引述《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 的文化大革命