PHP比你想象的好得多


Posted in PHP onNovember 27, 2014

有很多对于PHP的抱怨,甚至这些抱怨也出自很多聪明的人。当Jeff Atwood写下对于PHP的另一篇抱怨文章之后,我思考了下PHP的好的方面。

这些抱怨最大的问题是他们出自很多仍在使用旧版本PHP的人。他们或许是不愿意关心或许是不愿意承认PHP不管在语言层面还是在社区层面都在以很快的速度演变。实际上它比任何其他语言或者web平台都演变的快。尽管并不总是如此,但是过去的五年PHP经历了一个惊人的历程。

在说最近PHP社区取得的惊人成就之前,我们先来看看一些有趣的数字:PHP被77.9%的服务端编程语言已知的网站使用。Wordpress被全世界16.6%的网站使用。使用率最高的三个CMS建站系统是:第一的Wordpress份额为54.3%,第二的Joomla份额为9.2%,第三的Drupal份额为6.8%。这三个产品都是用PHP写的。

PHP一定做了一些正确的事,不是吗?

现在,我来告诉你吧,PHP的绝技在于:尽管经过了这么多年的变化,PHP对于非技术人员依然是最容易学习的语言,它让人可以比其他技术更快地建立动态网站,也让人没有麻烦地托管网站。PHP可能不是这个世界上设计最好的语言,但是它能让你完成事情(get things done),这一点是毋庸置疑的。

 

PHP语言

PHP5.0(2004年发布)带来了很实用的对象模型…等等,我在说8年前发布的东西。快进到现在的PHP5.4,即PHP最近的版本,带来了对于现代web语言你梦寐以求的东西:是的,PHP支持了命名空间(namespaces);是的,PHP支持闭包(closure);是的,PHP支持traits。

尽管需要花费一些时间,但是PHP5.4带来了一些语法糖使得整体体验比以往更好:是的,PHP支持用[ ]定义数组;是的,PHP支持新创建的对象这样调用函数:(new Foo())->bar();是的,PHP支持数组这样获取元素:$foo->bar()[1]。

PHP甚至向它自己曾犯过的错误学习:register_globals 和 magic_quotes被彻底删除了。

PHP有了内置web服务器以方便本地测试,它能以微秒级的速度启动。

接下来的挑战:我们怎样更新在网络上的讲解PHP的教程?在PHP程序中最好的支持WebSocket的技术是什么?

PHP生态系统

拥有一个好的语言是很好的,但是拥有一个好的生态系统更棒。在过去的几年PHP生态系统演变了很多。

Git

对于Git我不想讨论太多,Git被到处使用,PHP很快拥抱了Git。几乎所有PHP类库、框架和产品都在使用Git,包括PHP本身。

Composer

两年前,我想去掉我在symfony 1中hack的丑陋PEAR代码以支持插件。我想替换成能管理项目依赖的东西,而不是一个像PEAR一样的整体的安装,所以我试着寻找能管理软件依赖的最佳的算法。我几乎尝试了所有可能:从Perl到Ruby,从Debian到Redhat。结果没有让我满意的,只有我自己的解决方案恰巧能工作…当然这只是我的经验只谈。之后我偶然发现了ZYpp,就是它了。ZYpp使用布尔可满足性问题解来管理依赖。多亏了Nils Adermann和Jordi Boggiano的辛苦工作,PHP现在有了做好的管理依赖的工具?Composer。

是的,PHP比其他语言有了更好的依赖管理工具。

由于有了Git,Composer,和PHP内置web服务器,我们更容易下载/测试/安装一个PHP项目。

想测试Symfony(使用PHP5.4)?

$ composer.phar create-project symfony/framework-standard-edition

$ cd framework-standard-edition

$ ./app/console server:run

想测试Silex?

$ composer.phar create-project fabpot/silex-skeleton

$ cd silex-skeleton

$ php -S localhost:8888 -t web/

还不知道Composer?你应该了解下它了。

浏览下主要的Composer仓库Packagist,它已经拥有1900多个包,且它们在不到三个月的时间里被安装了上百万次。

接下来的挑战:在下一个PHP版本里内置Composer?

合作

社区合作是本文说的重点,也是我最引以为豪的地方。我们开始看到PHP项目中更好的合作,甚至大项目也是如此,大到你可以忽略其他项目了。

phpBB,Drupal,ez Publish,Symfony,和很多其他项目(比如phpDocumentor, PHPUnit, Behat, Zikula, Propel, Doctrine, Midgard等等)都在共享代码。是的,他们彼此是竞争者,但是他们都理解彼此合作是很重要的。Composer能很好地促进这种合作。

接下来的挑战:说服更多的项目加入这个趋势中来。

结论

让我再重申一次,PHP可能不是最好的编程语言,我也是第一个说出它的怪处的,但是PHP是迄今为止最好的web平台。

译自:PHP is much better than you think

PHP 相关文章推荐
MySql 按时间段查询数据方法(实例说明)
Nov 02 PHP
PHP 文件上传功能实现代码
Jun 24 PHP
检查用户名是否已在mysql中存在的php写法
Jan 20 PHP
经典PHP加密解密函数Authcode()修复版代码
Apr 05 PHP
php通过exif_read_data函数获取图片的exif信息
May 21 PHP
浅谈php的优缺点
Jul 14 PHP
php实现的XML操作(读取)封装类完整实例
Feb 23 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
Sep 20 PHP
PHP使用DOM对XML解析处理操作示例
Jul 04 PHP
使用laravel的migrate创建数据表的方法
Sep 30 PHP
Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建
Dec 13 PHP
php7 图形用户界面GUI 开发示例
Feb 22 PHP
简单说说PHP优化那些事(经验分享)
Nov 27 #PHP
几个实用的PHP内置函数使用指南
Nov 27 #PHP
简单谈谈php中ob_flush和flush的区别
Nov 27 #PHP
浅谈php优化需要注意的地方
Nov 27 #PHP
PHP实现文件下载详解
Nov 27 #PHP
thinkphp的URL路由规则与配置实例
Nov 26 #PHP
thinkphp文件引用与分支结构用法实例
Nov 26 #PHP
You might like
php&java(三)
2006/10/09 PHP
解析PHP中empty is_null和isset的测试
2013/06/29 PHP
PHP计算2点经纬度之间的距离代码
2013/08/12 PHP
PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
2014/05/10 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
2015/02/16 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
2016/11/25 PHP
JSON.stringify 语法实例讲解
2012/03/14 Javascript
JavaScript 更严格的相等 [译]
2012/09/20 Javascript
深入分析JQuery和JavaScript的异同
2014/10/23 Javascript
JavaScript的原型继承详解
2015/02/15 Javascript
js密码强度校验
2015/11/10 Javascript
支付宝小程序tabbar底部导航
2018/11/06 Javascript
详解Vscode中使用Eslint终极配置大全
2019/11/08 Javascript
微信小程序自定义顶部组件customHeader的示例代码
2020/06/03 Javascript
vue项目查看vue版本及cli版本的实现方式
2020/10/24 Javascript
在vant 中使用cell组件 定义图标该图片和位置操作
2020/11/02 Javascript
python中字典(Dictionary)用法实例详解
2015/05/30 Python
python图片验证码生成代码
2016/07/02 Python
浅析Python中yield关键词的作用与用法
2016/11/29 Python
Python numpy 常用函数总结
2017/12/07 Python
wxpython实现图书管理系统
2018/03/12 Python
Python SMTP发送邮件遇到的一些问题及解决办法
2018/10/24 Python
Python3 Post登录并且保存cookie登录其他页面的方法
2018/12/28 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
2019/04/26 Python
python语言的优势是什么
2020/06/17 Python
英国知名美妆护肤在线商城:Zest Beauty
2018/04/24 全球购物
如何写你的创业计划书
2014/01/07 职场文书
详细的大学生创业计划书模板
2014/01/27 职场文书
致400米运动员广播稿
2014/02/07 职场文书
公交公司毕业生求职信
2014/02/15 职场文书
关于元旦的广播稿
2014/02/16 职场文书
合作合同协议书范本
2015/01/27 职场文书
2015年助理工程师工作总结
2015/04/03 职场文书
获奖感言怎么写
2015/07/31 职场文书
2016银行求职自荐信
2016/01/28 职场文书
创业计划书之健康营养产业
2019/10/15 职场文书