1、PHP发展史,版本发展篇,Sina.贺海鹏,目录,前言,PHP 发展简述,PHP5 详述,期待,content,前言,升级PHP版本,有什么好处?1:便于维护服务器2:性能、安全将提升明显3:代码规范化4:支持更多新特性5:自身的提高6:,PHP 发展简述,版本的故事,PHP 发展简述,PHP 发展简述,PHP1,PHP1,PHP最初是作为一个快速、实用的工具包出现的。1994年,为了在自己的网站上增加一个小巧而实用的访客追踪系统,Rasmus Lerdorf编写了PHP的雏形程序。这是一个用Perl封装的简单工具。由于使用效果并不理想,Rasmus又用C语言重写了这个工具。后来,更多的人注意
2、到这个轻巧而简便的程序,并且要求增加更多的功能。Rasmus决定发布一个完整的版本,将其命名为Personal Home Page Tools。后来,Rasmus又发布了一个名为FI的可以做SQL查询的工具。勒多夫 Rasmus Lerdorf 出生在1968年9月22日。1993年毕业于加拿大滑铁卢大学计算机科学专业(University of Waterloo)。1被称为“PHP之父”。,PHP 发展简述,PHP2,PHP2,1996年Rasmus发布了PHP/FI2.0,这是一个基本完善的PHP程序包。它不仅可以访问数据库,而且可以嵌入HTML页面。此时,PHP/FI2.0 以及吸引了大
3、量的程序开发人员。在众多程序员之中,也包括了Zeev Suraski(苏拉斯基)和Andi Gutmans(古特曼斯),他们就是后来PHP3的始作者。由于不满足于PHP/FI在大型项目中的表现,Zeev和Andi作了重大的改进。,PHP 发展简述,PHP3,PHP3,1998年末,PHP3的第一个官方正式版本发行,其特色是具有更好的执行效果以及更清晰的结构。除此之外,PHP3的强大的功能还在于它的可扩展性。除了给最终用户提供数据库、协议和API的基础结构,它的可扩展性吸引了大量的开发人员加入并提交新的模块。这个全新的语言伴随着一个新的名称发布。这个名称更具广泛意义,而不仅局限于“个人主页工具”
4、的概念。它被命名为简单的缩写“PHP”。这是一种递归的缩写,它的全称是PHP:Hypertext Preprocessor。不久,Zeev Suraski和Andi Gutmans投入到了全新的PHP的开发之中。设计目标是增强程序运行性能和PHP自身代码的模块性。,PHP 发展简述,PHP4,PHP4,新的PHP核心被成为“Zend”(以Zeev和Andi的名字命名)引擎,于2000年5月随着新版PHP4.0发布。PHP4的性能较PHP3有着显著的提高。相同的脚本在PHP4中运行,最高可以有近10倍的性能提升。并且Zend提供了的脚本优化器,可以把源程序转为二进制编译代码,提高性能的同时,也保
5、护了程序源码不被暴露。在PHP4中增加了对各种Web服务器(如Apache、IIS/PWS及OmniHTTPd 等)的支持。此外,PHP4还增加了一些新的语言特性,如丰富的数组操作函数、完整的会话机制、对输出缓存的支持等。PHP4也对一些跨平台的技术提供了扩展支持,如对Adobe PDF、SWF、Java、Microsoft.NET等技术的支持。PHP4还增加了对类于对象的支持。尽管PHP4在这方面并不完善,但还是大大改善了对面向对象程序设计的支持。PHP4中的Pear库(PHP Extension and Application Repository)就是面向对象的应用与实践的最好例证。,P
6、HP 发展简述,PHP5,PHP5,尽管PHP4的发展是如此迅猛,但较之于其他流行的开发语言还是缺乏一些关键的功能特性,比如,PHP4中的面向对象功能并不完善,也无法实现异常(Exception)的捕捉与处理。因此在一些特殊问题的处理上还是捉襟见肘的。2004年7月,PHP5正式版本的发布,标志着一个全新的PHP时代的到来。它的核心是第二代Zend引擎,并引入了对全新的PECL模块的支持。PHP5的最大特点是引入了面向对象的全部机制,并且保留了向下的兼容性。程序员不必再编写缺乏功能性的类,并且能够以多种方法实现类的保护。另外,在对象的集成等方面也不再存在问题。使用PHP5引进了类型提示和异常处
7、理机制,能更有效的处理和避免错误的发生。,PHP 发展简述,PHP6,PHP6,1、支持Unicode。2、Register Globals3、Magic Quotes4、Safe Mode 取消5、var 别名为 public6、通过引用返回将出错7、zend.ze1 compatbility mode 将被移去8、Freetype 1 and GD 1 support 将不见9、dl()被移到 SAPI 中dl()主要是让设计师加载extension Libs10、Register Long Array 去除 从PHP5起默认是关闭11、一些Extension的变更例如 XMLReader
8、 和 XMLWriter 将不再是以Extension的方式出现12、APC将被导入核心13、告别ASP风格的起始标签,PHP 发展简述,PHP7,为什么跳过PHP6直接上PHP7?,最广为使用的直译式语言PHP终于有最新正式版的消息了,经过PHP社群核心贡献者投票,超过7成的人同意最新的PHP版号将是PHP7而非PHP6。从2005年开发至2010年终止的PHP6,已在这几年陆续将新功能并入PHP5.3以及PHP5.4中PHP社群核心参与者Andrea Faulds与Zeev Suraski在PHP的Wiki上?,共同发表文章表示,PHP6的开发遇到了一些问题,导致一直没办法释出正式版本(G
9、eneral Availability),他们认为PHP6是一个失败的专案,现在是该进到PHP7的时候了。PHP7原先是PHP社群中的惠新辰与Dmitry Stogov私下进行的PHPNG专案,后来专案较成型后公开而受大家所接受,并朝下一个PHP接班版本发展。,PHP7(PHP NG)发布,2015年6月11日,PHP官网发布消息,正式公开发布PHP7第一版的alpha版本,PHP 发展简述,PHP所有版本发布时间表,PHP所有重大版本发布时间表(按发布时间倒序排列),5.6.02014-08-285.5.02013-06-205.4.02012-03-015.3.02009-06-305.2
10、.02006-11-025.1.02005-11-245.0.02004-07-134.4.02005-07-114.3.02002-12-274.2.02002-04-224.1.02001-12-104.0.02000-05-223.0.x2000-10-20,PHP5 详述,PHP5的故事,PHP5 详述,PHP5 详述,PHP 4.x 到 PHP 5,PHP 4.x 到 PHP 5,PHP5 详述,PHP 4.x 到 PHP 5,PHP 5 中有哪些的改变(未向下兼容),strrpos()和 strripos()如今使用整个字符串作为 needle。非法使用字符串偏移量会导致 E_ER
11、ROR 而不是 E_WARNING。一个非法使用的例子:$str=abc;unset($str0);.array_merge()被改成只接受数组PATH_TRANSLATED 服务器变量在 Apache2 SAPI 中不再暗中设定没有属性的对象不再被当成“empty”有些情况下类必须在使用前被定义()get_class(),get_parent_class()和 get_class_methods()返回区分大小写ip2long()在传递入一个非法 IP 作为参数时返回 FALSE,不再是-1。include_once 和 require_once 在 Windows 下先将路径规格化,因此包
12、含 A.php 和 a.php 只会把文件包含一次。如果有函数定义在包含文件中,则这些函数可以在主文件中使用而与是否在 return 指令之前还是之后无关。如果文件被包含两次,PHP 5 会发出致命错误,因为函数已经被定义,而 PHP 4 不管这个。因此推荐使用 include_once 而不要去检查文件是否已被包含以及在包含文件中有条件返回。/*/将被支持以上仅列出部分常用内容,更多请参考官方网站,PHP5 详述,PHP 4.x 到 PHP 5,CLI 和 CGI:,PHP 5 中对 CLI 和 CGI 文件名作了些改变。PHP 5 中,CGI 版本被改名为 php-cgi.exe(以前是
13、php.exe),现在主目录中的是 CLI 版本(之前是 cli/php.exe)。PHP 5 中引进了一种新模式:php-win.exe。这和 CLI 版本相同,只除了 php-win 不输出任何内容,因此不会提供控制台(屏幕上不会闪过“dos 窗口”)。此行为类似 php-gtk。PHP 5 中,CLI 版本总会产生全局变量$argv 和$argc 而不管 php.ini 是怎么设的。即使将 register_argc_argv 设为 off 也不影响 CLI。,PHP5 详述,PHP 4.x 到 PHP 5,移植配置文件:,由于 ISAPI 模块的名字改了,从 php4xxx 改为 ph
14、p5xxx,因此需要对配置文件作些修改。移植 Apache 配置极其简单。照下面的例子来检查需要做的修改:Example#1 移植 Apache 配置文件到 PHP 5#将下面这行:LoadModule php4_module/php/sapi/php4apache2.dll#改成这一行:LoadModule php5_module/php/php5apache2.dll如果 web 服务器是以 CGI 模式运行 PHP 的,应该注意 CGI 版本的名字从 php.exe 改为了 php-cgi.exe。在 Apache 中,应该照这样改:Example#2 移植 Apache 配置文件到 P
15、HP 5,CGI 模式#将下面这行:Action application/x-httpd-php/php/php.exe#改成这一行:Action application/x-httpd-php/php/php-cgi.exe其它的 web 服务器中,需要修改 CGI 或者 ISAPI 模块的名字。,PHP5 详述,PHP 4.x 到 PHP 5,其他改变:,增加了4条新指令:register_long_arrays、session.hash_function、session.hash_bits_per_character、zend.ze1_compatibility_mode新增了约80个新
16、的函数:如 array_combine()、array_walk_recursive()、iconv_substr()、stream_get_line()、str_split()、scandir()等数据库:MySQLi 的支持,并对 SQLite 扩展库内置在 PHP 中PHP 5 中有个新对象模型(Object Model)。PHP 处理对象的方式完全重写了,允许更佳性能和更多特性。自 PHP 5 起引进了新常量 E_STRICT,其值为 2048:E_ALL 不包括 E_STRICT,因此其默认未激活。自 PHP 5 起引进了新常量 E_STRICT,其值为 2048:E_ALL 不包括 E_STRICT,因此其默认未激活。,PHP5 详述,PHP 5.2.x 到 PHP 5.3.x,PHP 5.2.x 到 PHP 5.3.x,PHP5 详述,PHP 5.2.x 到 PHP 5.3.x,PHP 5.3.x 新特性:,添加了命名空间的支持.(见实例)添加了跳标签的支持(goto语句)(见实例)添加了静态绑定支持.(后期静态绑定:见实例)添加了原生的闭包(Lambda/匿名函数)支持
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1