在 2016 年做 PHP 开发是一种什么样的体验?(一)
嘿,我最近接到一个网站开发的项目,不过老实说,我这两年没怎么接触编程,听说 Web 技术已经发生了一些变化。听说你是这里对新技术最了解的开发工程师?
你算是找对人了。我对今年的技术别提多熟了, VR 、机器学习、守望先锋……你尽管问吧。我刚去了几个热门的技术大会逛了一圈,没有什么新技术是我不知道的。
厉害。是这样的,我要开发一个网站,用来展示用户的最新动态。我想我应该通过后端接口获取数据,然后用一个 table 来展示数据,用户可以对数据进行排序。如果服务器上的数据变化了,我还需要更新这个 table 。我的思路是用 jQuery 来做。
可别用 jQuery !现在哪还有人用 jQuery 。现在是 2016 年了,你绝对应该用 React 。
等等,这句话之前已经有一位前端大神和我说过了,我今天主要是想问你后端该怎么做。
哦原来是这样,你提到了 Smarty ?你后端语言是 PHP 对吧,现在哪还有人用 Smarty 。现在是 2016 年了,你绝对应该用 Twig 。
Twig ?也是一个模板引擎吗?
是的,但是 Twig 的语法更加优雅,使用更方便,速度也快,而且许多开发框架都支持把 Twig 作为模板引擎,和框架的整合也做得更好。
好吧那我用 Twig ,请问在哪里下载?
你不用自己下载安装,只需要在你项目的 composer.json 文件中添加一个依赖,然后 Composer 会帮你安装。
等等, Composer 是什么?
Composer 是一个以 PSR-4 标准进行自动化包管理的工具,用它可以方便的进行各种第三方软件的依赖管理和下载、更新等操作
PSR-4 ?
对, PSR-4 是 PHP-FIG 组织提出的多个为了统一项目规范的标准之一,是用来规范 PHP 项目的 Namespace 、目录结构、加载规范的。
那除了 PSR-4 之外还有什么?
还有用来规定代码风格的 PSR-1 ,以及 PSR-1 的扩展版本 PSR-2 ,还有用来规定日志的 PSR-3 ,用来规定缓存的 PSR-6 ,用来规定 HTTP 头消息的 PSR-7 ,以及……
等等,怎么没有 PSR-5 ?
有的,但 PSR-5 还处在草稿阶段,没有正式发布,所以我没有讲给你听。
有 PSR-8 吗?
有的,现在一共是到 PSR-0 到 PSR-17 ,但我没提到的那些大部分都在草稿阶段,所以同上,我没有讲给你听。
好吧好吧,我用 Composer 行了吧。
等等,在你用之前,我建议先配置一个镜像,因为 Composer 的服务器在国外,直接使用经常会出现问题,对了如果你的项目比较大的话,可能第一次使用要 FQ 才能使用。
为什么?
因为虽然软件的版本信息是存在 Composer 的服务器上的,但有大部分软件的 zip 文件是存放在 github 或者别的什么地方的。
好吧这些我都搞定了,我想开始写代码了,听说 Zend Framework 挺有名的?
现在是 2016 年了,没人再用 ZF 了。现在比较流行的 PHP 框架有 Symfony 、 Laravel 、 YII 、 Codeigniter 这些,如果你对性能要求比较高或者想开发一些 Socket 相关的功能的话,可以试试看 Phalcon 、 Yaf 、 Swoole 、 Workerman 、 ReactPHP 这些,对了最近还有个叫 Kraken 的框架在 Github 上比较火,但我还没有试过。
有没有国内用的比较广泛的框架?
ThinkPHP 刚刚推出了支持 Composer 的 5.0 版本,但我建议你再观望一下再决定是否用。
我以前听说最新版本是 3 ,怎么现在是 5 了,请问 ThinkPHP 4 去哪里了?
这个套路你还不明白吗?请问你用过 Java 2/3/4 或者 Windows9 吗?
好吧,确实没用过,不过我懂你的意思了。我可以开始写代码了吧? Editplus 我早就装好了
可别用 Editplus !现在哪还有人用 Editplus 。现在是 2016 年了,你绝对应该用 PHPStorm ,非常好用,同类的还有 NetBeans 、 Zend Studio 但现在已经没什么人用了,如果你喜欢简单一些的工具,可以用 Sublime 、 Atom ,或者像我们公司的程序员 MM 一样直接用 VIM 。
程序员 MM ?
是的,对了我们公司在漕河泾,有兴趣可以投个简历给我 [email protected] ,有机会在面试时和程序员 MM 直接交流。
好吧好吧…随便问问,反正我有女朋友。对了请问代码该怎么调试呢?我以前用 Editplus 的时候都是在代码里写 var_dump 和 die 的。
现在哪还有人 var_dump() + die()。现在是 2016 年了,你绝对应该用 Ladybug 。
Ladybug?
对,类似 var_dump + die ,但是更加好用,能够把要 dump 对象里的内容展示的清清楚楚,配合 Xdebug 你甚至可以在 IDE 里进行断点调试、临时更改变量的值等等
Xdebug?
是的,一个 PHP 的调试工具,安装之后可以像调试 Java 、 C 那样调试 PHP 。
看起来好高级的样子,但我程序还没开始写呢,我听人说写代码第一步是要建数据库?
没错,但现在已经是 2016 年了,没有人直接用客户端连上数据库去建表了,大家都在用 ORM 工具管理数据库。
什么是 ORM ?
ORM 可以让你像操作类一样去操作一个数据库,知名的 ORM 工具有: Doctrine 、 Propel 、 Eloquent 这些。
难道我不能直接写 SQL 吗?
可以当然是可以的,但现在是 2016 年了,没人直接写 SQL 了。而且如果直接写 SQL 的话,安全性怎么办?如果字段做了变更怎么更新所有现存的 SQL ?代码的部署回滚怎么和数据库绑定?而且用了 ORM 之后你可以很简单的就创建出一个表的 CRUD 表单,甚至可以很简单的写几行代码就实现对这个表的各种 API 操作。
听上去很不错啊,能举个例子吗?
比如我最常用的 Doctrine ,只要我用 PHP 类去定义一个表的实体结构( Entity ),我就可以让 Doctrine 自动生成这个表的 DDL ,即使我的表结构有变更, Doctrine 也会帮我生成所对应的 update 表结构的 DDL 。 Entity 在每个字段上都可以进行设置,设置完我就可以生成一个对这个表进行操作的 CRUD 表单,假设某个字段我设置的是日期类型,这个字段在 HTML 里就会被自动生成并映射成为一个包含三个下拉框的组件,而这三个下拉框分别是年月日。
好酷炫,那还有别的用处吗?
多了去了,每个网站都有后台吧,使用了 Doctrine 的话配合一些工具,只要写几行代码就可以生成基于表的后台管理界面,实现一个基本可用的网站后台。但需要注意 Doctrine 一般是以 Service 的方式被用在项目中的,你直接用 Doctrine 并不会很方便。
Service ?
是的,你可以理解为一系列的你代码中可能会用到的第三方应用,他们都通过 Service 的方式被注册到程序中,你在用到某个功能的时候,只需要对他们进行调用即可,就像调用一个函数那么简单。 Service 一般都会支持 IoC 和 DI ,所以对你将来程序的升级也会很有帮助。
IoC 和 DI ?这不是 JavaEE 里面经常用到的东西吗?
没错,但 PHP 项目中现在也在大量使用 IoC 和 DI ,比如 Symfony 和 Laravel 中就都有非常强大的一套 Service 系统,实现了 IoC 和 DI 。
好吧不明觉厉,但是我的开发环境还没有呢,是不是先装一个 XAMPP 吗?
现在是 2016 年了,没人还在用 XAMPP 了。你至少得用个 Vagrant 或者 Docker 吧?不然你的代码准备怎么部署?开发环境和生成环境怎么保证统一?难道你准备直接用 FTP 传源代码文件吗?
er ……是的,难道不应该用 FTP 传代码吗?
现在是 2016 年了,没人还在用 FTP 直接传代码了,最差你也得用个 rsync 吧?你可能没有 Vagrant 或者 Docker ,但至少应该尝试用一个部署工具并配置一套部署脚本,比如 Deployer 、 Capistrano 、 Ansible 、 Fabric 等等,如果配合 CI ,自动检查代码、部署那就更完美了。
CI ?
对, Continuous Integration ,指的是自动化处理分支的合并、运行测试用例、代码检查、部署等操作,你可以用 Jenkins 自己搭一个,也可以用 Bamboo 或者 CircleCI.com 。为了及时知道代码的 CI 结果,你可以把你的 CI 系统和 Slack 、零信等 IM 工具做整合,这样的话你就可以灵活的在团队里分享并自动化处理各种信息。
能举个例子吗?
比如代码如果在线上出了错,系统可以自动定位到某一次提交,并且发送邮件给改动人。比如服务器负载高了可以自动水平扩展服务器架构。
水平扩展服务器架构?
水平扩展的意思就是服务器配置不变,但是数量增多,相对应的垂直扩展就是服务器的性能变高,但是数量不变。
那具体是怎么做到的呢?
首先你的程序架构要支持水平扩展,比如 session 和数据库不能存放在单机上,当然还有一些复杂的注意事项暂且不提。其次是你的服务器架构要支持水平扩展,如果你用的是云服务,一般都会有水平扩展的 API ,直接调用就是了。
听起来好复杂,我的网站暂时应该不会有流量问题,但如果程序出现问题怎么办,有什么办法能及时通知到我吗?
现在是 2016 年了。一般的做法是搭建一套 ELK 系统进行日志的存储、搜索、展示。
ELK ?
对,就是 Elasticsearch 、 Logstash 和 Kibana 三个软件的缩写,因为大家都经常固定用这三个组合,所以缩写成了 ELK 。当然如果你不想那么麻烦,可以用 Sentry ,或者再简单点自己搭建一个 Log.io
你别扯远,我就想简简单单跑一个 PHP 的运行环境,听说 Facebook 公司曾经出了个叫什么 HipHop for PHP 的东西?
没想到你还懂得挺多, HipHop 是 Facebook 出的一款用来加速 PHP 运行的软件,核心原理是把 PHP 代码编译成为一个可以直接执行的程序。而且现在已经是 2016 年了,没人再用 HipHop 了。现在至少你得用 HHVM ,或者 PHP7
HHVM ?
是的 HHVM ,因为 HipHop 需要编译才能用,每次 PHP 代码改动都需要重新编译,非常麻烦,所以 Facebook 转而做了 HHVM 。核心原理差不多,但 HHVM 不再需要编译过程,可以直接执行 PHP 文件了,基本上你可以理解为 HHVM 是一个超级加速版的 PHP 。
未完待续,再往下写我感觉我收不住了,所以先放出来大家看着一乐吧,有时间再继续。
1
GhostEX 2016-10-14 00:11:30 +08:00 via iPhone
好赞!思路很清晰
|
2
shlabc 2016-10-14 00:12:42 +08:00
真挺不错的,支持
|
3
BruceHong 2016-10-14 00:16:19 +08:00
非常赞!
|
4
Remember 2016-10-14 00:38:10 +08:00 via iPhone 5
很敬业啊,广告打完还写了那么多
|
5
sutra 2016-10-14 00:51:41 +08:00 via iPhone
被套路了 是招聘广告 啊哈哈哈
|
6
dangyuluo 2016-10-14 00:53:37 +08:00
广告之余了解到不少有用的东西。
|
7
eoo 2016-10-14 00:58:28 +08:00 via Android
套路 都是套路
|
8
isCyan 2016-10-14 01:12:35 +08:00 via Android
我很庆幸,我没有落后很远
|
9
dabpop139 2016-10-14 01:13:06 +08:00 via Android
还在 FTP 飘过,蓝瘦,香菇。
|
10
Hello1995 2016-10-14 01:30:43 +08:00 via iPhone
如同 YouTube 上优秀的广告,很实在。不会像“传奇霸业”式广告让人尴尬。
|
11
upczww 2016-10-14 01:36:04 +08:00 via Smartisan T1
很敬业的广告。
|
12
benbenlang 2016-10-14 01:51:15 +08:00 1
程序员年龄大点就要失业啊!
|
13
shiji 2016-10-14 02:20:16 +08:00
@benbenlang 是啊,新框架,新工具满天飞。问题是每个人用的溜的就那么几个,能和就职公司保持大体一致越来越难。
|
14
herozzm 2016-10-14 03:08:21 +08:00
符合国情
|
15
allan888 2016-10-14 05:34:44 +08:00 1
和 js 的版本比起来弱爆了啊。
这个看起来还挺明白的, js 那个才是看得头疼。 |
16
falcon05 2016-10-14 07:22:03 +08:00 via iPhone
写得很好啊,赞
|
17
Tyanboot 2016-10-14 07:48:46 +08:00
@allan888 我也这么觉得。。。 PHP 写了这么一大堆,不过绝大部分都是有一定必要性的。 JS 那个看完真的是头疼
|
18
nicegoing 2016-10-14 08:01:08 +08:00 via Android
PHP 那么多框架也不一定要全会吧。还有 ORM , IOC 也拿出来说,要说繁琐,那 Javaee 不得哭死
|
19
bboysoul 2016-10-14 08:19:27 +08:00 via Android
拍黄片的感觉
|
20
zlink 2016-10-14 08:31:01 +08:00 via Android
mark 一下,我得一个一个区搜索一下。
|
21
yanyandenuonuo 2016-10-14 08:31:30 +08:00 via iPad
2016V 站年度最佳招聘贴
|
22
imnpc 2016-10-14 08:35:38 +08:00
写得不错 好多东西都很好 很多都在用
|
23
RoundCat 2016-10-14 08:36:33 +08:00 via Android
期待第二部😊😊😊
|
24
726332269 2016-10-14 08:36:57 +08:00 via Android
还好吧,很多都不是必须使用的,需要的现学都是来得及的。
|
25
R18 2016-10-14 08:37:34 +08:00 via Android
很不错 很多我都不知
|
26
orderc 2016-10-14 09:00:46 +08:00
PHP 技术栈变更远不及 Javascript
|
27
yuanchao 2016-10-14 09:02:44 +08:00
最佳招聘帖,坚定完毕
|
28
MrJing1992 2016-10-14 09:05:28 +08:00
PHP 技术栈变更远不及 Javascript +1024
大概因为我是 PHPer 吧 |
29
baiyi 2016-10-14 09:08:51 +08:00
广告插入的非常自然:dog
|
30
Time2 2016-10-14 09:11:24 +08:00
2016-- V 站年度最佳招聘贴
|
31
old9 2016-10-14 09:11:50 +08:00 via Android
前端那篇是黑,这篇读起来像最佳实践呢…
|
33
bugcat 2016-10-14 09:13:59 +08:00
我突然发现我似乎还停留在早期的 PHP 文明阶段,所以难怪找不到新工作了?好可怕
|
34
cenxun 2016-10-14 09:16:06 +08:00
长姿势了,赞
|
35
daryl 2016-10-14 09:18:06 +08:00
坐等 2016 年做 java/ios/android/windows 是一种什么样的体验
|
36
einvince 2016-10-14 09:18:09 +08:00
如果广告都可以这么有心,我愿意天天看
|
37
tabris17 2016-10-14 09:22:55 +08:00
有了 PHP7 后, HHVVM 可以不必再提了
|
38
yuyeliu 2016-10-14 09:23:11 +08:00 via iPhone
我居然看完了
|
39
my101du 2016-10-14 09:23:26 +08:00
写得真不错。很多以前不明白的东西豁然开朗
|
40
yangxiongguo 2016-10-14 09:24:56 +08:00
好文
|
41
kideny 2016-10-14 09:31:41 +08:00
这种帖子,真心看着很罗嗦。
|
42
HanSonJ 2016-10-14 09:34:48 +08:00
这套路,很深啊
|
43
yvcold 2016-10-14 09:38:46 +08:00
666 ,写的真好
|
44
yaoxuwang 2016-10-14 09:39:19 +08:00 via iPhone
赞!期待后续
|
45
itisthecon 2016-10-14 09:40:09 +08:00
写的不错!
|
46
sun019 2016-10-14 09:43:02 +08:00
写的不错啊 期待下一篇
|
47
greatcl 2016-10-14 09:43:33 +08:00 via Android
厉害了洪大师👍
|
48
lycheng 2016-10-14 09:45:42 +08:00
赞,写得不错
|
49
Lucups 2016-10-14 09:46:10 +08:00
HHVM 后面应该可以写 PHP7 了~
|
50
Delbert 2016-10-14 09:47:38 +08:00 via Android
好赞。。。老司机能不能教我入门?
|
51
CtrlSpace 2016-10-14 09:50:41 +08:00
写不出 JS 那篇的味道,哈哈
|
52
lijinma 2016-10-14 09:52:30 +08:00
写的不错, PHP 7 出来,应该不用提 HHVM 了,哈哈
|
53
Felldeadbird 2016-10-14 09:55:30 +08:00
我瞬间感觉自己活在 PHP 的远古时代。 composer 工作上没用过, ORM 也没用上。。各种 docker 也没用上。
|
54
rubyvector 2016-10-14 09:57:52 +08:00
写了那么多,就是还没开始干活.干活的就那几个核心,非得去整那么多号称提高效率的框架.
到底是要人写代码,还是要人学软件 这是个讽刺帖,没看出哪点是招聘帖了 |
55
mhycy 2016-10-14 10:01:43 +08:00
说实在的用不用 ORM 得看业务场景的
|
56
houxg09 2016-10-14 10:01:45 +08:00
这个守望先锋的广告不错:)
|
57
houshengzi 2016-10-14 10:07:19 +08:00
还没开始干活,就已经列出一堆东西~瞬间不想干活了
|
58
LichMscy 2016-10-14 10:10:06 +08:00
|
59
udonmai 2016-10-14 10:16:13 +08:00
4 年前大部分东西就都在用了。。 PHP 弱爆了
|
60
Outshine 2016-10-14 10:18:36 +08:00
|
61
flyingghost 2016-10-14 10:19:40 +08:00
这只是一个招聘广告帖。。。
前端版只提炼一点核心理念就可以打败 PHP 版:疯狂的前端们会抛弃 1 年陈以上的技术,拥抱昨天刚出生的技术。 但前端们笑的还是太早了点,他们即将被修改后的 PHP 版 v2.0 彻底击败溃不成军。因为 v2.0 版只有一句话: PHP 是世界上最好的语言。 |
62
hisway 2016-10-14 10:20:17 +08:00
哈哈,写的不错,看下来,感觉就是这么走下来的,路线和自己折腾的路线一致,等下篇~
|
63
quericy 2016-10-14 10:23:44 +08:00
“好吧好吧…随便问问,反正我有女朋友”
果然是得好几年没当程序猿才能找到女朋友么? |
64
lution 2016-10-14 10:36:18 +08:00
·LZ 总结的很好
|
65
aksoft 2016-10-14 10:37:44 +08:00
走得太急容易扯着蛋。。。
|
66
lawmil 2016-10-14 10:46:09 +08:00
老练的广告司机
|
68
an168bang521 2016-10-14 10:52:08 +08:00
[可别用 jQuery !现在哪还有人用 jQuery 。现在是 2016 年了,你绝对应该用 React 。]
等等,这句话之前已经有一位前端大神和我说过了,我今天主要是想问你后端该怎么做。 另外一个帖子在这里: https://www.v2ex.com/t/310767 预感除了 php 外,还要出别的系列了 |
69
Focusgan 2016-10-14 10:53:42 +08:00
这样的广告给我来一打。赞
|
70
fuxkcsdn 2016-10-14 11:00:50 +08:00
满满都是套路啊
不过提问者真的就只想搭个简单点 CMS 啊,就不能直接让人家去改织梦之类的吗 XD |
71
mrgeneral 2016-10-14 11:27:53 +08:00
看到中间,就知道是广告了。
bug 里面的一些技术还是不错,都在工具层,期待下篇。 |
72
kobe123 2016-10-14 11:35:52 +08:00
666 这个就是广告贴的新标准
|
73
wemore 2016-10-14 11:47:39 +08:00 via Android
希望出个 javaee 版的
|
74
nt47 2016-10-14 11:51:19 +08:00
滑稽.jpg
|
75
a67793581 2016-10-14 11:58:16 +08:00
感谢作者啊~~一下子发现自己落后了这么多 除了工具是用新的 PHPStorm PHP 还在使用 5 呢 其他的都被说中了!!!!期待更多内容
|
76
weegc 2016-10-14 11:58:34 +08:00
超级赞的,强帖留名
|
77
q397064399 2016-10-14 11:59:00 +08:00
@wemore Java 一直比较稳定,没啥好黑的, DI AOP MVC 早就根植于 Java 里面了,你要是搞 Java 的,连依赖注入是怎么一回事都不知道,就可以去死了
|
78
Zzzzzzzzz 2016-10-14 11:59:16 +08:00
smarty 之前还可以提一下 phplib 嘛
|
79
Jakesoft 2016-10-14 12:14:48 +08:00 via iPhone
原来是洪大师啊,还有你在携车网啊?哎,在武汉时没法去面试,还有之前看了你的 symfony 教程,确实赞!
|
80
benteke 2016-10-14 12:23:09 +08:00
不错的。。。。。。。。
|
81
benteke 2016-10-14 12:30:20 +08:00
软文的最高境界
|
82
angelsoul 2016-10-14 12:42:30 +08:00
作为一个疯狂的前端看了这个感觉想去搞个 php 项目实践下
|
83
nilai 2016-10-14 12:43:22 +08:00
good.
|
84
barbery 2016-10-14 12:54:08 +08:00 1
一直都是 var_dump 调试。。。
|
85
itabas016 2016-10-14 13:05:01 +08:00 via Android
现在发展竟这么快~
|
86
ggiiss 2016-10-14 13:25:25 +08:00
当 PHP 的科普文拜读一下。
|
87
huhuhushan 2016-10-14 13:25:43 +08:00
2016 了 不应该直接上 php7 ?
|
88
tupaopao 2016-10-14 13:29:15 +08:00
专门上来顶一下
|
89
magicdawn 2016-10-14 13:44:35 +08:00
顶一下...
|
90
ylsc633 2016-10-14 14:24:06 +08:00
哦?是洪大师? 特地 来顶一下
|
91
youxiachai 2016-10-14 14:32:47 +08:00
这个广告.满分!
|
92
phpman 2016-10-14 14:36:04 +08:00
哈哈哈
|
93
jayzhong 2016-10-14 14:56:46 +08:00
看起来比 JavaScript 好太多了
|
94
wuhaoworld 2016-10-14 15:14:43 +08:00
赶紧出别的系列,😁
|
95
zi 2016-10-14 15:36:10 +08:00
一百多人收藏。。这 HR 满分了
|
96
sobigfish 2016-10-14 16:09:19 +08:00
|
97
vh2h 2016-10-14 16:12:40 +08:00
楼主,出个 python 版的!
楼主,出个 python 版的! 楼主,出个 python 版的! |
98
daniellu 2016-10-14 16:15:42 +08:00
这个广告还是不错的 哈哈哈
|
99
ashchen 2016-10-14 16:52:49 +08:00
斜车网,买的保险送的保养,准备下次试试
|
100
demonchang 2016-10-14 16:54:51 +08:00
评优
|