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 相关文章推荐
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
Jul 03 PHP
PHPThumb PHP 图片缩略图库
Mar 11 PHP
php 启动报错如何解决
Jan 17 PHP
php读取flash文件高宽帧数背景颜色的方法
Jan 06 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
Mar 18 PHP
PHP实现WebService的简单示例和实现步骤
Mar 27 PHP
php生成gif动画的方法
Nov 05 PHP
PHP识别二维码的方法(php-zbarcode安装与使用)
Jul 07 PHP
PHP构造二叉树算法示例
Jun 21 PHP
php实现的统计字数函数定义与使用示例
Jul 26 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
Aug 30 PHP
Laravel统一错误处理为JSON的方法介绍
Oct 18 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的宝库目录--PEAR
2006/10/09 PHP
分享下php5类中三种数据类型的区别
2015/01/26 PHP
解决Laravel无法使用COOKIE和SESSION的问题
2019/10/16 PHP
laravel 解决paginate查询多个字段报错的问题
2019/10/22 PHP
javascript 打开页面window.location和window.open的区别
2010/03/17 Javascript
IE下JS读取xml文件示例代码
2013/08/05 Javascript
Javascript堆排序算法详解
2014/12/03 Javascript
jquery实现根据浏览器窗口大小自动缩放图片的方法
2015/07/17 Javascript
JS随机洗牌算法之数组随机排序
2016/03/23 Javascript
详解用node搭建简单的静态资源管理器
2017/08/09 Javascript
安装vue-cli报错 -4058 的解决方法
2017/10/19 Javascript
简单的Vue异步组件实例Demo
2017/12/27 Javascript
尝试自己动手用react来写一个分页组件(小结)
2018/02/09 Javascript
[38:40]2018DOTA2亚洲邀请赛 4.6淘汰赛 mineski vs LGD 第一场
2018/04/10 DOTA
Python比较两个图片相似度的方法
2015/03/13 Python
Python调用C语言开发的共享库方法实例
2015/03/18 Python
浅析Python的Django框架中的Memcached
2015/07/23 Python
python验证码识别的实例详解
2016/09/09 Python
python删除本地夹里重复文件的方法
2020/11/19 Python
spark: RDD与DataFrame之间的相互转换方法
2018/06/07 Python
Python3 max()函数基础用法
2019/02/19 Python
为什么你还不懂得怎么使用Python协程
2019/05/13 Python
python3实现高效的端口扫描
2019/08/31 Python
python给图像加上mask,并提取mask区域实例
2020/01/19 Python
Python API len函数操作过程解析
2020/03/05 Python
python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例
2020/03/06 Python
财产公证书
2014/04/10 职场文书
安全教育月活动总结
2014/05/05 职场文书
大学生职业生涯十年规划书范文
2014/09/17 职场文书
公司授权委托书格式样本
2014/10/01 职场文书
公司行政助理岗位职责
2015/04/11 职场文书
计划生育责任书
2015/05/09 职场文书
宾馆安全管理制度
2015/08/06 职场文书
汽车车尾标语大全
2015/08/11 职场文书
青年干部培训班学习心得体会
2016/01/06 职场文书
讲解MySQL增删改操作
2022/05/06 MySQL