PHP 是最好的语言?关于 PHP 开发未来的 6 点建议 - 开源中国社区
PHP 是最好的语言?关于 PHP 开发未来的 6 点建议
OSC源创君 2018年05月16日

PHP 是最好的语言?关于 PHP 开发未来的 6 点建议

OSC源创君 OSC源创君 发布于2018年05月16日 收藏 36

PHP 为什么是最好的语言?你肯定听过这个段子:

女孩:“你能让这个论坛的人都吵起来, 我今晚就跟你走。”

程序员: “PHP是最好的语言!”

论坛炸锅了, 各种吵架…

女孩:“ 服了你了, 我们走吧你想干啥都行。”

程序员: “今天不行, 我一定要说服他们, PHP必须是最好的语言。”

上面虽然是程序员的玩笑梗,但“PHP 是最好的语言” 这句话最早可能出自 2001 年 7 月的 PHP 官方文档。

PHP is the best languages for web programming , but what about other languages ?

PHP 是最好的网络编程语言,那么其他语言呢?

—— PHP and other languages


抛开玩笑梗,认真来说,PHP 的确称得上最好的语言之一。

首先,PHP 入门简单,容易掌握,对新手友好,而且程序健壮性好,不容易出现像 Java 、 C++ 等其他语言那样复杂的问题,如内存泄漏和 Crash ,跟踪调试相对轻松很多。

再者,功能函数应有尽有,不需要重新造轮子。PHP 官方提供的标准库非常强大,各种功能函数包括MySQL、Memcache、Redis、GD图形库、CURL、XML、JSON等等都能找到,免除了开发者到处找库的烦恼。

另外,PHP 文档详细易懂,每个函数都有仔细的说明和使用示例。第三方类库和工具、代码、项目也很丰富。开发者可以快速、高效地使用 PHP 编写开发各类软件。

可以说,目前为止市面上仍然没有出现比 PHP 更简单易用的编程语言。然而,自 PHP 诞生到现在的 20 多年间,从 Web 时代兴起到移动互联网退潮,互联网领域各种编程语言和技术层出不穷, Node.js 、 GO 、 Python 不断地在挑战 PHP 的地位。PHP 语言的局限也开始凸显,PHP 语言未来在哪里?PHP 程序员当如何应对未来的变革?

性能问题

PHP 最令人诟病的一点非性能莫属,作为一门动态脚本语言,PHP 的优点是开发方便效率高,缺点就是性能差。在密集运算的场景下比 C 、 C++ 相差几十倍甚至上百倍。另外 PHP 不可以直接操作底层,需要依赖扩展库来提供 API 实现。

使用 PHP7

PHP7 版本对 Zend 引擎做了大量修改,大幅提升了 PHP 语言的性能,使用 PHP7 可以使程序性能瞬间翻倍。即使是 WordPress 这样重量级的软件运行在 PHP7 都能有上千 QPS ,相当于一台服务器每天就能处理 8000 万次请求。使用 PHP7 ,做好 MySQL 优化,使用 Memcache 和 Redis 进行加速,这套技术架构完全可以应对相当大规模的系统。除了某些亿级用户的平台之外,一般规模的系统完全没有压力。

学习 C/C++/GO

PHP 程序员可以学习一门静态编译语言作为补充实现动静互补,C/C++/Go 都是不错的选择。而且静态语言的编程体验与动态语言完全不同,学习过程可以让你得到更大的提升。掌握 C/C++ 语言后,还可以阅读 PHP 、 Swoole 、 Nginx 、Redis 、 Linux内核 等开源软件的源码,了解其底层运行原理。

现在最新版本的Swoole提供了C++扩展模块的支持,封装了Zend API,用C++操作PHP变得很简单,可以用C++实现PHP扩展函数和类。

管理规范

Composer

Composer 出现后,PHP 的依赖管理可以变得非常简单。程序内依赖一些类库和框架,直接使用 Composer 引入即可,通过使用 composer update 安装依赖的包。解决了过去加载外部库的各种难题。Composer 也有国内镜像,速度非常快。现在绝大部分PHP开源的项目都提供了 Composer 的支持,建议大家在项目中使用 Composer 来解决 PHP 代码包管理的问题,不要再使用下载源码、手工 include 的原始方法。

PSR

PSR 是 http://www.php-fig.org/ 组织制定的PHP语言开发规范,约定了很多方面的规则,如命名空间、类名规范、编码风格标准、Autoload、公共接口等。现在已经成为PHP技术社区事实上的标准了。很多知名的 PHP 框架和类库都遵守了 PSR 规范。PHP 开发者应当学习掌握 PSR 规范,在开发程序时应当尽量遵循 PSR 规范。

应用扩展

Vue.js

PHP 程序员除了写后台程序之外,还有很大一部分工作在展现层,和浏览器前端打交道。2017 年你还在用 jQuery 操作 DOM 实现界面渲染吗?已经完全 out 了。现在用 Vue.js 可以非常方便地实现数据和 DOM 元素的绑定。通过 Ajax 请求后台接口返回数据后,更新前端数据自动实现界面渲染。

如果你不光要写 Web 程序,同时还希望兼顾 Android 、IOS 、PC 客户端等平台,React Native 是一个不错的选择。

Swoole

PHP 还局限于做 Web 网站吗?Swoole 是一个异步并行的通信引擎,作为 PHP 的扩展来运行。Node.js 的异步回调 Swoole 有,Go语言的协程 Swoole 也有,这完全颠覆了对 PHP 的认知。

使用 Swoole PHP 可以实现常驻内存的 Server 程序,可以实现 TCP 、 UDP 异步网络通信的编程开发。过去PHP只能做一个 Web 网站,现在使用 Swoole 可以做 Java 、C++ 才能实现的通信服务,比如 WebSocket 即使通信、聊天、推送服务器、RPC 远程调用服务、网关、代理、游戏服务器等。

可以说,Swoole 是每位 PHPer 都需掌握的必备技能。但 Swoole 的使用门槛对新手来说相对较高,需要付出一定的精力成本。

所以这一次,我们邀请了 Swoole 开源项目的创始人 —— 韩天峰参加「上海源创会」,为我们介绍 Swoole 4.0 全新的 PHP 协程编程模式,以及 Swoft 协程框架的使用,基于 Swoft Cloud 提供的各类组件实现 PHP 微服务架构。

除此之外,5 月 27 日(周日)上海源创会 还邀请了黄励博(又拍云系统开发高级工程师)、曲骏(安畅混合云服务架构团队负责人)、朱明智(个推B2D研发部平台研发专家)、许雪里(XXI系列开源软件作者,美团点评工程师)四位行业大牛。以架构为核心,与你进行一场关于面对面的技术对话。

点击报名,与业内大咖和更多小伙伴当面交流。(社区)

社区报名链接:https://www.oschina.net/event/2278742?origin=sqrw1

扫码报名,与业内大咖和更多小伙伴当面交流。(微信)



微信报名链接:https://www.oschina.net/event/2278742?origin=wxrw1


注:以上内容有引用和参考 2017年PHP程序员未来路在何方 韩天峰

https://segmentfault.com/a/1190000008888700?utm_source=tuicool&utm_medium=referral

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:PHP 是最好的语言?关于 PHP 开发未来的 6 点建议
分享
评论(156)
精彩评论
18

引用来自“漫步海边小路”的评论

php最大的败笔就是索引数组和关联数组混为一谈,命名应该分成两种数据类型,在处理复杂json的时候php太蛋疼,贴别是json的空数组和空对象并存的时候,php极容易转换为与预期不符的类型;另外标准库中大量的用前缀开头的函数即难记又感觉不太正经

引用来自“福嘞娃”的评论

那是你菜,数组都玩不转还写PHP,一个$data[]=[] 就搞定

引用来自“漫步海边小路”的评论

你能说你没遇到坑,年轻人

引用来自“JPer”的评论

哈哈,java不管多么资深都会吐槽php的数据。。。 还别说,我虽然java和php都略懂,但是我也讨厌php的数组,作为实参传递时鬼知道里面是啥;
无语,你怎么不喷,node.js传递了对象,鬼知道里面有啥? node.js各种回调方法,还没PHP这种类型标注,不一样有人爱,你怎么不喷呢!Java传递一个hashtable鬼知道里面有啥?怎么不喷java呢?
你想知道数据有哪些字段,传递一个对象啊,php又不是不支持类。。
自己不会变通,别搞程序了,有问题不会变通只会喷,脑子这么死,转行吧。
15
厉害了我的程序员们,一篇广告软文也能吵起来
8

引用来自“漫步海边小路”的评论

php最大的败笔就是索引数组和关联数组混为一谈,命名应该分成两种数据类型,在处理复杂json的时候php太蛋疼,贴别是json的空数组和空对象并存的时候,php极容易转换为与预期不符的类型;另外标准库中大量的用前缀开头的函数即难记又感觉不太正经

引用来自“福嘞娃”的评论

那是你菜,数组都玩不转还写PHP,一个$data[]=[] 就搞定
PHP统一数组和字典并保证插入顺序,共享一套数组操作函数,大大简化了开发.
反观其他语言,还要用额外的包来实现有序的字典:
Python OrderedDict
Java LinkedHashMap
CSharp OrderedDictionary

至于JSON空数组和空对象,PHP的json_encode一个JSON_FORCE_OBJECT参数就能搞定的事,那人还纠结,不是黑是什么?还有PHP的前缀命名也被说不正经,那C也是一门不正经的语言了,比如Linux系统调用epoll_create,epoll_ctl,epoll_wait太不正经了,我们都应该拒绝使用.
6
可以说,Swoole 是每位 PHPer 都需掌握的必备技能

看到这句,就有预感下面莫不是广告?果然..
5
作为用go翻过php逻辑的男人,:grimacing:你会发现php真的是世界上最好的语言,特别是数组那块:blush:
最新评论
0
对于你们这些喜欢吵架的,喜欢比较各种语言谁N逼的人,我有一句话,不知当讲不当讲?吵你Ma Mai Pi!还有发起这种引吵话题的人(编J)....
0
热闹
0

引用来自“netkiller-”的评论

如果PHP能搭上区块链这班车,可能会翻身。

引用来自“左华栋”的评论

本身设计太蠢,性能又差。。。脚本语言里,python 说了有点欺负人, js 可以在浏览器跑,V8 引擎性能也不错,作为胶水语言也可以。
Dart 不算主流,PHP 也不能通过webassembly 对性能加持....从前景来说,就算有人写了,也没意义。而且这种肯定是 php-cli 写

引用来自“福嘞娃”的评论

@左华栋 js还是老老实实跑在浏览器上面吧,毕竟要不是出了个node,js离开了浏览器啥都不是,别出了一个node就能高潮好几天,既然js这么语言无敌,那语言第一语言就给你js了,虽然js的语法是所有语言最丑陋的,当然你这么坚持也祝你一辈子用js,也祝你公司一辈子用js,不用谢

引用来自“左华栋”的评论

typescript 了解一下。 js 应用领域还是挺广泛的, web前端,后端(包括微服务),APP,桌面应用,VR,嵌入式,区块链,深度学习....

引用来自“福嘞娃”的评论

不管是什么script,你JS就相当于一坨大便,至于什么 后端(包括微服务),APP,桌面应用,VR,嵌入式,区块链,深度学习....,就相当与你要拿着这坨大便可以煮着、炒着、油炸的吃,那是你的自由,我也建议你这么干

引用来自“左华栋”的评论

所以你最多了解到 es6 , 并不了解 typescript ~~
我只能告诉你 typescript 语法接近 C# , 对比来看, php 显得很垃圾~
社区活跃,恰恰说明了它的魅力,你所说的问题存在,但 typescript 可以解决
像你这种swoole只支持mysql与redis的彩笔,脸皮也是比城墙还厚,明明不懂非要装的很懂得样子,被打脸也是一副死猪不怕开水烫得姿态
0
房子买了吗?
媳妇娶了吗?
孩子的奶粉玩具学校兴趣班都落实没有?
房贷车贷压身你可不能失业呀!
想好今年回去聚会拿什么装逼没?
看到你当年初中还没毕业的同学开豪车不要太酸哦
上个月延期的项目做完没有?
别吵,你老板又在群里发语音指点江山灌鸡汤叫你们加班了
0
有PHP的地方就有江湖:grinning:
1
我用一句话就能让这个论坛的人都吵起来。
0
八等屁民,都是为了钱,直接报收入和资产吧,有什么好争的:laughing::laughing::laughing::laughing:
1
精彩:clap::clap::clap:
0

引用来自“不要点击我”的评论

这里的评论都看完了,发现你是战神. @左华栋
很多 phper 真的是没了解过 java C# 或者node golang 就在那高潮~~
越显得无知~
战神谈不上, 以前也php , 尽可能给一些人警醒吧~~ 不要沉浸在 golang 太难 springboot 太慢 node 不稳定 js 太乱的世界了, 这世界早变了
0
这里的评论都看完了,发现你是战神. @左华栋
0

引用来自“动弹”的评论

phalcon

引用来自“左华栋”的评论

phalcon 只能接近原生PHP ,而没真正解决 php 广受诟病的非常驻内存和同步阻塞问题

引用来自“Zzzzzzzz神”的评论

js这种垃圾别在php面前秀,哪个PHPer不会js,数组元素值只能是字符串,而且不能动态修改,取出来还得转换,node.js 没有一个能用的框架,npm下载的组件居然是单独命令,必须放到/usr/bin下面,要不然用起来都麻烦,只支持异步不支持同步,一个大型复杂的项目永远是优先同步的,异步的不可靠、难控制永远表明着node.js只能做些垃圾小项目,连支付宝、微信 这种大厂商和其他那些99%的小服务商更是没有任何node SDK,没有任何一家中型以上企业后端语言是说主用node,淘宝这种只是拿node来渲染页面,多进程垃圾,多线程、协程没有,占内存比PHP还高,而且一趟ab 压力测试内存还极其不稳定,一说异步回掉地狱就说 async/await,且不说就算用了async/await 依然是地狱,再者说了JB半天一个项目还是存在大量回掉,这种玩具可别拿出来笑话别人了

引用来自“morphism”的评论

“数组元素值只能是字符串” 别的不说,这一条真笑出屎来了。。。还真没听说过有这种语言:joy::joy::joy:

“哪个PHPer不会js” 会 Jquery 和会 js 是不一样的。 js 精神实质上是贴近 fp 的,号称“披着c语言外衣的 scheme”,React 之类的东西,也完全是从 FP 社区 port 来的概念。js 只是被两类人拉低了层次:切图仔、phper

“只支持异步不支持同步” 今年的笑点完全被承包啊:joy::joy::joy::joy::joy::joy::joy:,如前所述逻辑 “PHPer 都会 js”,看来阁下只能是切图仔了。。。但是这也讲不通,切图仔我相信也是会百度的。。。是的,这种层次的知识甚至百度都可以搜到。。。那么,还是百度下同步和异步是啥吧。。。顺便的,你可以告诉别人你用的是谷歌,谷歌的拼写为 google,切记切记

“多进程垃圾,多线程、协程没有,占内存比PHP还高”,有次说到热更新,应该是扯和 erlang 有关的东西,结果对面 phper 说,php 也是热更新的,嗯,改了后刷新页面就可以。。。没毛病 :joy::joy::joy::joy:
内存占用高这点,某种程度上,php 确实胜过所有的语言,不来请求的时候就不占内存嘛(默认场景),多高效。。。而 redis 就是相反的极端……啥事也不干,唯一的目的就是占内存:joy::joy::joy::joy:

。。。。。。不过说了,阁下太有内涵。。。最后一点,感谢阁下提供的机会。。。虽然 phper 普遍比较菜,但是阁下这么菜的头一回见(像本社区某红人,起码会百度啊),让我有了膨胀的欲望。。。给我支付宝账号,请你喝杯咖啡做为感谢

引用来自“福嘞娃”的评论

@morphism 人家说的就是js数组里面的元素只能是字符串,你听不懂也很正常,毕竟你是写js的,js在php眼里只是前端页面,只要是写js的PHPer基本都是初级php,被人歧视的,这里说的异步同步不是说你同步异步调用,而是node的底层进程模型就是异步io的,根本就不支持同步io,把热更新说成刷新页面,人才

引用来自“左华栋”的评论

好好看看 node 的 fs 等模块,是同时支持异步和同步的....
吵的好热闹,吃瓜 ing
0
PHP 的帖子下面永远那么火
0
说得我都想转PHP了
0

引用来自“灰灰”的评论

会有精彩回复……
PHP是最完美的语言
3
也是服了你们这帮人,npm就看他繁荣的程度,和composer比,也知道几斤几两了,还要辩吗?在nodejs和php层面,没有谁更优雅谁更好,只是适用场景的问题,都是脚本语言,有什么好比的?但swoole就算了,PHP语言做回调,结果只能说比JS更不堪而已。

PHP7,已经沦为another Java了,可是ZendVM并没有JDK那么伟大,那么open。扩展什么的,有那闲工夫,我不如搞搞go、Java、.net Core好了。
1
引战文章,OSC也玩起刷热点了?@红薯 不老实啊
1

引用来自“netkiller-”的评论

如果PHP能搭上区块链这班车,可能会翻身。

引用来自“左华栋”的评论

本身设计太蠢,性能又差。。。脚本语言里,python 说了有点欺负人, js 可以在浏览器跑,V8 引擎性能也不错,作为胶水语言也可以。
Dart 不算主流,PHP 也不能通过webassembly 对性能加持....从前景来说,就算有人写了,也没意义。而且这种肯定是 php-cli 写

引用来自“福嘞娃”的评论

@左华栋 js还是老老实实跑在浏览器上面吧,毕竟要不是出了个node,js离开了浏览器啥都不是,别出了一个node就能高潮好几天,既然js这么语言无敌,那语言第一语言就给你js了,虽然js的语法是所有语言最丑陋的,当然你这么坚持也祝你一辈子用js,也祝你公司一辈子用js,不用谢

引用来自“左华栋”的评论

typescript 了解一下。 js 应用领域还是挺广泛的, web前端,后端(包括微服务),APP,桌面应用,VR,嵌入式,区块链,深度学习....

引用来自“福嘞娃”的评论

不管是什么script,你JS就相当于一坨大便,至于什么 后端(包括微服务),APP,桌面应用,VR,嵌入式,区块链,深度学习....,就相当与你要拿着这坨大便可以煮着、炒着、油炸的吃,那是你的自由,我也建议你这么干
所以你最多了解到 es6 , 并不了解 typescript ~~
我只能告诉你 typescript 语法接近 C# , 对比来看, php 显得很垃圾~
社区活跃,恰恰说明了它的魅力,你所说的问题存在,但 typescript 可以解决
0
一个人用php可以开发pc,wap,app桌面软件,月收入30万就足够了,而且这句话是官网说的,没用过php就别bb,php不是桌面语言,不是后台语言,别拿不能做的来比较。php是最好的网络编程语言,这句话是100%正确的,未来打败他的也只可能js,打败java的海了去了
5
作为用go翻过php逻辑的男人,:grimacing:你会发现php真的是世界上最好的语言,特别是数组那块:blush:
1
女孩:“你能让这个论坛的人都吵起来, 我今晚就跟你走。”
程序员: “PHP是最好的语言!”
论坛炸锅了, 各种吵架…
女孩:“ 服了你了, 我们走吧你想干啥都行。”
程序员: “今天不行, 我一定要说服他们, PHP必须是最好的语言。”
——看评论有感。:boom::collision::sparkles::sparkling_heart::star2::star::clap::muscle::thumbsup::+1::fire:
顶部