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/cn.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灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP