PHP的历史和优缺点


Posted in PHP onOctober 09, 2006

1 历史
Rasmus Lerdorf为了创建他的在线简历而创造了"个人主页工具"(Personal Home Page Tools)。这是一种非常简单的语言。其后越来越多的人们注意到了这种语言并对其扩展提出了各种建议。在许多人的无私奉献下以及这种语言本身的源代码自由性质,它演变成为一种特点丰富的语言,而且现在还在成长中。
PHP虽然很容易学习,但是速度上比mod_perl(植入web服务器的perl模块)慢。现在有了可以与mod_perl速度想媲美的被称作Zend的新引擎,而PHP4就可以充分利用这个引擎。PHP4还处在BETA测试阶段。Andy Gutmans和Zeev Suraki是Zend的主要作者。可以去Zend站点(http://www.zend.com)了解更多。
PHP的应用在个人性质的web工程中增长显著。根据Netcraft在1999年10月的报告,有931122个域和321128个IP地址利用PHP技术。
2 PHP的优点
应用PHP有许多好处。当然已知的不利之处在于PHP由于是开放源码项目,没有什么商业支持,并且由此而带来的执行速度缓慢(直到PHP4之前)。但是PHP的邮件列表很是有用而且除非你正在运行像Yahoo!或者Amazon.com这样的极受欢迎的站点,你不会感觉出PHP的速度与其他的有什么不同。最起码我就没有感觉出来!好了,让我们来看看PHP有那些优点:
- 学习过程
与Java和Perl不同,你不必把头埋进100多页的文档中努力学习才可以写出一个象样的程序。只要了解一些基本的语法和语言特色,你就可以开始你的PHP编码之旅了。之后你在编码过程中如果遇到了什么麻烦,还可以再去翻阅相关文档。
PHP的语法与C,Perl,ASP或者JSP。对于那些对上述之一的语言较熟悉的人来说,PHP太简单了。相反的,如果你对PHP了解较多,那么你对于其他几种语言的学习都很简单了。
你只需要30分钟就可以将PHP的核心语言特点全部掌握,你可能已经非常了解HTML,甚至你已经知道怎样用编辑设计软件或者手工来制作好看的WEB站点。由于PHP代码能够无障碍的添加进你的站点,在你设计和维护站点的同时,你可以很轻松的加入PHP使得你的站点更加具有动态特性。
- 数据库连接
PHP可以编译成具有与许多数据库相连接的函数。PHP与MySQL是现在绝佳的组合。你还可以自己编写外围的函数取间接存取数据库。通过这样的途径当你更换使用的数据库时,可以轻松的更改编码以适应这样的变化。PHPLIB就是最常用的可以提供一般事务需要的一系列基库。
- 可扩展性
就像前面说的那样,PHP已经进入了一个高速发展的时期。对于一个非程序员来说为PHP扩展附加功能可能会比较难,但是对于一个PHP程序员来说并不困难。
- 面向对象编程
PHP提供了类和对象。基于web的编程工作非常需要面向对象编程能力。PHP支持构造器、提取类等。
- 可伸缩性
传统上网页的交互作用是通过CGI来实现的。CGI程序的伸缩性不很理想,因为它为每一个正在运行的CGI程序开一个独立进程。解决方法就是将经常用来编写CGI程序的语言的解释器编译进你的web服务器(比如mod_perl,JSP)。PHP就可以以这种方式安装,虽然很少有人愿意这样以CGI方式安装它。内嵌的PHP可以具有更高的可伸缩性。
- 更多特点
PHP的开发者们为了更适合web编程,开发了许多外围的流行基库,这些库包含了更易用的层。你可以利用PHP连接包括Oracle,MS-Access,Mysql在内的大部分数据库。你可以在苍蝇上画图,编写程序下载或者显示e-mail。你甚至可以完成网络相关的功能。最好的是,你可以选择你的PHP安装版本需要哪些功能。引用Nissan的Xterra的话来说就是PHP可以做到你想让它做到的一切而且无所不能!
3 竞争对手:ASP,mod_perl,JSP
我当然不清楚ASP/JSP能做些什么。不过明确的是编写那样的代码有多简单,购买它们会有多昂贵以及它们需要多么昂贵和强大的硬件。如果你有什么中立的观点(比如说没有被SUN和Microsoft的百万美金所影响),请顺便通知我。
据我所知,JSP基于Java,因此Java程序员可以轻松开始编码。ASP只是一个一般的引擎,具有支持多种语言的能力,不过默认的并且是最常用的还是VBScript。
mod_perl与Perl一样强大,只是更快一些。
如果你在安装过程中有什么问题,可以到论坛讨论。

PHP 相关文章推荐
文件上传的实现
Oct 09 PHP
PHP开发框架总结收藏
Apr 24 PHP
php 在线打包_支持子目录
Jun 28 PHP
php购物网站支付paypal使用方法
Nov 28 PHP
php安全之直接用$获取值而不$_GET 字符转义
Jun 03 PHP
php绘图中显示不出图片的原因及解决
Mar 05 PHP
php简单实现多字节字符串翻转的方法
Mar 31 PHP
Symfony2实现从数据库获取数据的方法小结
Mar 18 PHP
Laravel如何友好的修改.env配置文件详解
Jun 07 PHP
PHP随机数函数rand()与mt_rand()的讲解
Mar 25 PHP
php传值和传引用的区别点总结
Nov 19 PHP
TP5框架实现签到功能的方法分析
Apr 05 PHP
新版PHP将向Java靠拢
Oct 09 #PHP
JAVA/JSP学习系列之七
Oct 09 #PHP
PHP开发大型项目的一点经验
Oct 09 #PHP
JAVA/JSP学习系列之六
Oct 09 #PHP
PHP的宝库目录--PEAR
Oct 09 #PHP
PHP中调用JAVA
Oct 09 #PHP
PHP数据库操作面向对象的优点
Oct 09 #PHP
You might like
ThinkPHP采用GET方式获取中文参数查询无结果的解决方法
2014/06/26 PHP
smarty高级特性之对象的使用方法
2015/12/25 PHP
jquery div 居中技巧应用介绍
2012/11/24 Javascript
侧栏跟随滚动的简单实现代码
2013/03/18 Javascript
javascript实现的多个层切换效果通用函数实例
2015/07/06 Javascript
jQuery实现的简单折叠菜单(折叠面板)效果代码
2015/09/16 Javascript
JS DOM实现鼠标滑动图片效果
2020/09/17 Javascript
jQuery插件FusionCharts绘制的3D饼状图效果实例【附demo源码下载】
2017/03/03 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
2017/06/01 Javascript
Angular 4.0学习教程之架构详解
2017/09/12 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
2017/12/13 Javascript
Vue微信项目按需授权登录策略实践思路详解
2018/05/07 Javascript
JavaScript中发出HTTP请求最常用的方法
2018/07/12 Javascript
vue-router判断页面未登录自动跳转到登录页的方法示例
2018/11/04 Javascript
Vue为什么要谨慎使用$attrs与$listeners
2020/08/27 Javascript
vue 二维码长按保存和复制内容操作
2020/09/22 Javascript
Python的Flask框架中配置多个子域名的方法讲解
2016/06/07 Python
浅谈python中的实例方法、类方法和静态方法
2017/02/17 Python
Python中的groupby分组功能的实例代码
2018/07/11 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
2018/12/24 Python
python 定时器,轮询定时器的实例
2019/02/20 Python
详解用Python实现自动化监控远程服务器
2019/05/18 Python
PYTHON绘制雷达图代码实例
2019/10/15 Python
canvas实现圆形进度条动画的示例代码
2017/12/26 HTML / CSS
HTML5 body设置自适应全屏
2020/05/07 HTML / CSS
Sneaker Studio匈牙利:购买运动鞋
2018/03/26 全球购物
JSF面试题:Jsf中导航的标签是什么
2013/04/20 面试题
雅虎笔试题(字符串操作)
2015/03/24 面试题
出国留学自荐信
2013/10/25 职场文书
电子商务个人自荐信
2013/12/12 职场文书
给同学的道歉信
2014/01/16 职场文书
党员四风自我剖析材料思想汇报
2014/09/13 职场文书
农村党支部书记四风问题个人对照检查材料
2014/09/21 职场文书
云台山导游词
2015/02/03 职场文书
小学见习报告
2015/06/23 职场文书
oracle删除超过N天数据脚本的方法
2022/02/28 Oracle