PHP比你想象的好得多
作者:mdxy-dxy 发布时间:2023-11-20 09:33:30
有很多对于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


猜你喜欢
- 首先,我们需要着重介绍一些概念,以给你提供一些使这个“奇迹”得以发生的组成部分。太轻易地泄露伏笔对于讲故事来说不是个好的形式,所以那些不愿意
- 在多个文件或者不同语言协同的项目中,python脚本经常需要从命令行直接读取参数。万能的python就自带了argprase包使得这一工作变
- cache 是一个带索引带超时的缓存库目的在于优化代码结构,提供了若干实践。 https://github.com/weapons
- 网页的布局也许是大家最不放在眼里的地方,其实布局地位如同文字的排版一样,随便可布,布即随便。但是看过我上篇《网页设计技巧系列 之 文本排版》
- PS笔刷,样式,形状、渐变、滤镜载入方式及使用:1、笔刷载入方式: 打开PS,编辑-->预设管理器-->载入-->然后点你
- 在Soundbreak我们每天24小时不间断地播放实况音频和视频,所以对于MySQL的新增的复制特性,我们不能做出很令人信服的测试。通过测试
- 数据类型是所有开发语言的基础,JavaScript虽然是一个弱类型的脚本语言,但是在数据类型上也有很多讲究的,看了淘宝UED玉伯的一篇文章,
- 本文介绍了网页中插入视频播放的代码全集:有avi格式的视频,mpg格式,smi格式,rm格式,wmv格式,wma格式,Windows Med
- Mysql数据库是一个多用户,多线程的关系型数据库,是一个客户机/服务器结构的应用程序。它是对个人用户和商业用户是免费的. Mysql数据库
- 书 名:细节决定交互设计的成败国际书号:ISBN 978-7-121-08232-0作 &nb
- 随着网络技术的不断发展,网络应用已经渗透到人类社会的各个角落。作为网络世界的支撑点的网站,更是人们关注的热点:政府利用网站宣传自己的施政纲领
- HTML是万维网上发布超文本的通用语言[1]。从1982年Tim Berners-Lee简化SGML建立HTML的原始定义到2001年发布X
- asp生成html如果采用utf8编码方式,多数采用的是Adodb.Stream组件,因为fso并不能支持Utf-8最近在写一个生成HTML
- 数据处理在现代企业运营中变得越来越重要,越来越关键,甚至会成为企业发展的一项瓶颈. 数据保护的重要性也不言而喻. 如果一个企业没有很好的数据
- 特点:不需要另外加个清除DIV:after(伪对象)--设置在对象后发生的内容,通常和content配合使用,IE不支持此伪对象,非Ie 浏
- 代码如下: 代码如下:<% '用ASP获取远程目标网页指定内容On Error Resume Next Server.Scri
- 1.彻底弄懂CSS盒子模式一(DIV布局快速入门) 2.彻底弄懂CSS盒子模式二(导航栏实例) 3.彻底弄懂CSS盒子模式三(浮动的表演和清
- 本文实例讲述了Go语言转换所有字符串为大写或者小写的方法。分享给大家供大家参考。具体如下:Go语言的string模块包含了ToLower和T
- 有时在项目中会遇到通过在页面中采用iframe的方式include其它页面,这时就会考虑不要因出现滚动条而影响页面效果,但include页面
- 前言在开发工作中,我们经常需要用到日期与时间,如:作为日志信息的内容输出计算某个功能的执行时间用日期命名一个日志文件的名称记录或展示某文章的