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 相关文章推荐
PHP中对数据库操作的封装
Oct 09 PHP
php Mysql日期和时间函数集合
Nov 16 PHP
php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
Sep 05 PHP
解析CI的AJAX分页 另类实现方法
Jun 27 PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
Apr 12 PHP
关于PHP通用返回值设置方法
Mar 31 PHP
PHP编程计算两个时间段是否有交集的实现方法(不算边界重叠)
May 30 PHP
PHP将英文数字转换为阿拉伯数字实例讲解
Jan 28 PHP
Laravel核心解读之异常处理的实践过程
Feb 24 PHP
基于Laravel 5.2 regex验证的正确写法
Sep 29 PHP
详解no input file specified 三种解决方法
Nov 29 PHP
利用ajax+php实现商品价格计算
Mar 31 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
php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
2009/09/05 PHP
计算一段日期内的周末天数的php代码(星期六,星期日总和)
2009/11/12 PHP
基于pear auth实现登录验证
2010/02/26 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
2016/02/27 PHP
Laravel 修改验证异常的响应格式实例代码详解
2020/05/25 PHP
js前台判断开始时间是否小于结束时间
2012/02/23 Javascript
JS删除数组元素的函数介绍
2013/03/27 Javascript
jquery基础知识第一讲之认识jquery
2016/03/17 Javascript
js实现div在页面拖动效果
2016/05/04 Javascript
vue从使用到源码实现教程详解
2016/09/19 Javascript
移动开发之自适应手机屏幕宽度
2016/11/23 Javascript
使用JavaScript解决网页图片拉伸问题(推荐)
2016/11/25 Javascript
AngularJS折叠菜单实现方法示例
2017/05/18 Javascript
Vue项目中quill-editor带样式编辑器的使用方法
2017/08/08 Javascript
js+html获取系统当前时间
2017/11/10 Javascript
jQuery使用动画队列自定义动画操作示例
2018/06/16 jQuery
H5+C3+JS实现双人对战五子棋游戏(UI篇)
2020/05/28 Javascript
react-native滑动吸顶效果的实现过程
2019/06/03 Javascript
JS实现点击生成UUID的方法完整实例【基于jQuery】
2019/06/12 jQuery
Vue 实现把表单form数据 转化成json格式的数据
2019/10/29 Javascript
微信小程序基于高德地图API实现天气组件(动态效果)
2020/10/22 Javascript
wxpython中Textctrl回车事件无效的解决方法
2016/07/21 Python
python OpenCV学习笔记直方图反向投影的实现
2018/02/07 Python
python3 property装饰器实现原理与用法示例
2019/05/15 Python
浅析Windows 嵌入python解释器的过程
2019/07/26 Python
在keras里实现自定义上采样层
2020/06/28 Python
Python中BeautifulSoup通过查找Id获取元素信息
2020/12/07 Python
工程概预算专业毕业生求职信
2013/10/04 职场文书
英文简历中的自我评价用语
2013/12/09 职场文书
ktv总经理岗位职责
2014/02/17 职场文书
文明风采获奖感言
2014/02/18 职场文书
努力学习演讲稿
2014/05/10 职场文书
大学生毕业求职信
2014/06/12 职场文书
初级党校心得体会
2014/09/11 职场文书
给老婆的保证书怎么写
2015/05/08 职场文书
详解Java分布式事务的 6 种解决方案
2021/06/26 Java/Android