498)this.width=498; onmousewheel=javascript:return big(this) src=http://www.bkjia.com/uploadfile/2013/0904/20130904095451688.jpg title=php比你想象的好得多>
有很多对于 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 语言
php 5.0(2004年发布)带来了很实用的对象模型 … 等等,我在说 8 年前发布的东西。快进到现在的 php 5.4,即 php 最近的版本,带来了对于现代 web 语言你梦寐以求的东西:是的,php 支持了命名空间(namespaces);是的,php 支持闭包(closure);是的,php 支持 traits。
尽管需要花费一些时间,但是 php 5.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 平台。
http://www.bkjia.com/phpjc/445653.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/445653.htmltecharticle有很多对于 php 的抱怨,甚至这些抱怨也出自很多聪明的人。当 jeff atwood 写下对于 php 的另一篇抱怨文章之后,我思考了下 php 的好的方面。...