Soft_Job 板


LINE

※ 引述《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 的文化大革命 -- 推薦閱讀:現代PHP http://www.books.com.tw/products/0010688181 -- 頂天立地:愛孩子就要支持蘿莉控 http://goo.gl/Bha7e --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.122.206
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1464236501.A.BCC.html ※ 編輯: GALINE (60.248.122.206), 05/26/2016 12:25:21
1F:推 crossdunk: 但就算php比較符合現在水準了,還是很多人看不起他 05/26 12:33
2F:推 Mtcat: 推推 05/26 12:34
3F:推 dreamnook: 資訊推 05/26 12:35
4F:→ dreamnook: 話說為啥不能支持正太控(誤 05/26 12:36
※ 編輯: GALINE (60.248.122.206), 05/26/2016 12:41:54
5F:→ comesuck: 看來我也要開始摸一下 05/26 12:43
6F:→ myhome6206: 那要學現代PHP 除了那本歐來梨的書之外 還有什麼推薦 05/26 12:56
7F:→ myhome6206: 的資源嗎? 書或者網路tutorial 05/26 12:57
PHP The Right Way 繁體中文版 http://laravel-taiwan.github.io/php-the-right-way/ ※ 編輯: GALINE (60.248.122.206), 05/26/2016 13:05:12
9F:→ GALINE: 阿,編輯放太久沒存檔結果貼了一樣的東西....XDDD 05/26 13:05
10F:推 dreamnook: 推書本 book了:D 05/26 13:07
11F:→ Argos: 阿 重複貼XD 05/26 13:08
12F:推 johnny94: php 真的很妙,一個脫胎換骨的概念 05/26 14:14
13F:推 LaPass: php的這種載入機制我覺得跟C C++很像.... 05/26 14:21
14F:→ GALINE: 要我說的話抄 java 抄的比較兇。不過目前對於掛在 05/26 14:28
15F:→ GALINE: namespace 下面的 function 沒有優雅的解決方案... 05/26 14:29
16F:推 PoloHuang: Modern PHP不錯 05/26 15:04
17F:→ LaPass: GALINE是指JSP嗎?JAVA的ClassLoader的機制跟PHP完全不一 05/26 15:30
18F:→ LaPass: 樣啊.... 05/26 15:30
19F:→ LaPass: JSP才有require之類的東東 05/26 15:32
20F:→ GALINE: 是說 PSR-0 跟 PSR-4 05/26 15:47
21F:推 Luos: 原來今年沒用php也進步了 05/26 16:35
22F:→ RedMapleWing: 兩個連結我很下意識的點了第二個是… 05/26 17:10
23F:推 carlcarl: 人生苦短 我用Python 05/26 20:33
24F:推 fouring: 後端不會PHP是不是不行啊? 05/26 21:01
25F:→ y3k: 就算現在 PHP一樣很容易寫出讓人看了覺得難過的東西 05/26 21:21
26F:→ y3k: 前面的包袱太重了 05/26 21:21
27F:推 crossdunk: 搭配FRAMEWORK就還好了吧 PHP的框架也進步很多呀 05/26 21:22
28F:推 sabiya: 作者推的這兩聯結的作者都是Josh Lockhart,我目前也有使 05/26 22:36
29F:→ sabiya: 他開發的micro web service framework,叫Slim Framework 05/26 22:37
30F:→ sabiya: 是真的蠻好用的,推薦給需要撰寫restful web api的開發者 05/26 22:39
31F:推 alog: 現在有lumen 05/26 22:44
32F:推 angusyu: 清新好文 05/27 08:43
33F:→ Ekmund: 文化大革命是失敗的吧=口= 05/27 08:54
34F:→ Argos: 革命當然尚未成功 PHP同志們仍需努力 團結奮鬥救PHP 05/27 09:38
35F:推 kenwufederer: 推一下PHP 05/27 09:49
36F:推 et282523: 不同的時空背景有不同的作法啊,也不能說 include 一堆 05/27 10:19
37F:→ et282523: 檔案就是錯誤的寫法吧?畢竟現在 php 的 autoload 也是 05/27 10:20
38F:→ et282523: 在 __autoload 做 include ,只是不去翻看不到而以。 05/27 10:21
39F:→ et282523: 當然 autoload 是優雅很多沒錯啦! 05/27 10:23
用古代的做法,我碰過的問題大概是這些 - 很容易重複載入同一個 lib,於是PHP就抱怨 class/function 定義重複 - 為了避免上一點,於是到處用 include_once,然後踩到效能問題 - 其實我覺得還好。不過認識的人說踩到效能問題過,解法是把 once 們拔掉.... - 每個 lib 組織檔案的方式都不同,所以 include 路徑看起來就五花八門... - 不同的檔案結果取了同樣的的 function name,於是 PHP 噴 error - 統一的 include 裡面什麼 lib 都 include 進來,連沒用到的功能也全部載進來 - 你看到某個 function,想改他的輸出值,但搜尋不到這個名字的 function - 或是你會找到三個同名的 function,不知道該改哪個 PSR-0/PSR-4 相當程度的解決上面這些問題 composer 則是幫你把符合規範的 autoloader 寫好(好吧,其他語言是內建...) 當然上面這些用 include 的方式也不是不能解決,但是需要公司內有明確的規範 訂規範就不是純技術問題,需要政治力量(例如挺你的長官)介入... 而且就算有內規,3rd party lib 也不會照你的規則走 你換公司的時候也要重來一次 現在則是比較明確,「照PHP-FIG的規定走」,這是超越公司/組織的政治力。 不過 PHP 用以前的作法也完全可以動,現況就變成你要弄乾淨可以弄的很乾淨。 但你想弄髒也依然可以弄的很髒... ※ 編輯: GALINE (60.248.122.206), 05/27/2016 13:14:22
40F:→ et282523: 同意,你解釋的好清楚啊,感覺學到了一些東西,感謝! 05/27 23:49
41F:推 chan15: 推超級 PHP XD 05/28 15:40
42F:推 JohnRoyer: 原 PO 請振作 XD 05/28 23:13
43F:推 side112358: PHPConf Taiwan 2016會請到現代PHP的作者,歡迎來聽! 05/31 17:29
44F:推 rickysu: 幫推 PHPConf Taiwan 2016... 06/01 09:31







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP