Re: [請益] php code在最後一行才require

作者: GALINE (天真可愛CQD)   2016-05-26 12:21:38
※ 引述《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 的文化大革命
作者: crossdunk (推噓自如)   2016-05-26 12:33:00
但就算php比較符合現在水準了,還是很多人看不起他
作者: Mtcat (山地貓)   2016-05-26 12:34:00
推推
作者: dreamnook (亞龍)   2016-05-26 12:35:00
資訊推話說為啥不能支持正太控(誤
作者: comesuck (艾米德)   2016-05-26 12:43:00
看來我也要開始摸一下
作者: myhome6206 (Rice)   2016-05-26 12:56:00
那要學現代PHP 除了那本歐來梨的書之外 還有什麼推薦的資源嗎? 書或者網路tutorial
作者: Argos (Big doge is watching u)   2016-05-26 13:01:00
作者: GALINE (天真可愛CQD)   2016-05-26 13:05:00
阿,編輯放太久沒存檔結果貼了一樣的東西....XDDD
作者: dreamnook (亞龍)   2016-05-26 13:07:00
推書本 book了:D
作者: Argos (Big doge is watching u)   2016-05-26 13:08:00
阿 重複貼XD
作者: johnny94 (32767)   2016-05-26 14:14:00
php 真的很妙,一個脫胎換骨的概念
作者: LaPass (LaPass)   2016-05-26 14:21:00
php的這種載入機制我覺得跟C C++很像....
作者: GALINE (天真可愛CQD)   2016-05-26 14:28:00
要我說的話抄 java 抄的比較兇。不過目前對於掛在namespace 下面的 function 沒有優雅的解決方案...
作者: PoloHuang (黃保羅)   2016-05-26 15:04:00
Modern PHP不錯
作者: LaPass (LaPass)   2016-05-26 15:30:00
GALINE是指JSP嗎?JAVA的ClassLoader的機制跟PHP完全不一樣啊....JSP才有require之類的東東
作者: GALINE (天真可愛CQD)   2016-05-26 15:47:00
是說 PSR-0 跟 PSR-4
作者: Luos (Soul)   2016-05-26 16:35:00
原來今年沒用php也進步了
作者: RedMapleWing (闇夜 楓)   2016-05-26 17:10:00
兩個連結我很下意識的點了第二個是…
作者: carlcarl (carl)   2016-05-26 20:33:00
人生苦短 我用Python
作者: fouring (香菇)   2016-05-26 21:01:00
後端不會PHP是不是不行啊?
作者: y3k (激流を制するは静水)   2016-05-26 21:21:00
就算現在 PHP一樣很容易寫出讓人看了覺得難過的東西前面的包袱太重了
作者: crossdunk (推噓自如)   2016-05-26 21:22:00
搭配FRAMEWORK就還好了吧 PHP的框架也進步很多呀
作者: sabiya (別赤腳走路)   2016-05-26 22:36:00
作者推的這兩聯結的作者都是Josh Lockhart,我目前也有使他開發的micro web service framework,叫Slim Framework是真的蠻好用的,推薦給需要撰寫restful web api的開發者
作者: alog (A肉哥)   2016-05-26 22:44:00
現在有lumen
作者: angusyu (〒△〒)   2016-05-27 08:43:00
清新好文
作者: Ekmund (是一隻小叔)   2016-05-27 08:54:00
文化大革命是失敗的吧=口=
作者: Argos (Big doge is watching u)   2016-05-27 09:38:00
革命當然尚未成功 PHP同志們仍需努力 團結奮鬥救PHP
作者: kenwufederer (Nash)   2016-05-27 09:49:00
推一下PHP
作者: et282523 (不屈鬥志)   2016-05-27 10:19:00
不同的時空背景有不同的作法啊,也不能說 include 一堆檔案就是錯誤的寫法吧?畢竟現在 php 的 autoload 也是在 __autoload 做 include ,只是不去翻看不到而以。當然 autoload 是優雅很多沒錯啦!
作者: chan15 (ChaN)   2016-05-28 15:40:00
推超級 PHP XD
作者: JohnRoyer (Zero 日落)   2016-05-28 23:13:00
原 PO 請振作 XD
作者: side112358 ( Nrove)   2016-05-31 17:29:00
PHPConf Taiwan 2016會請到現代PHP的作者,歡迎來聽!
作者: rickysu (Ricky)   2016-06-01 09:31:00
幫推 PHPConf Taiwan 2016...

Links booklink

Contact Us: admin [ a t ] ucptt.com