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系列开源软件作者,美团点评工程师)四位行业大牛。以架构为核心,与你进行一场关于面对面的技术对话。