【php精品源码栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。
网学会员整理了php精品源码-【精品】PHP语言简介 - 其它资料的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
PHP 语言简介
PHP 独特的语法混合了 C、Java、Perl 以及
PHP 自创新的语法。
PHP 安装它可以比 CGI 或者 Perl 更快速的执行动态网页。
用
PHP 做出的动态页面与其他的编程语言相比,
PHP 是将程序嵌入到 HTML
文档中去执行,执行效率比完全生成 HTML 标记的CGI 要高许多;
PHP 还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
PHP 具有非常强大的功能,所有的 CGI 的功能
PHP 都能实现,而且支持几乎所有流行的数据库以及操作系统。
编辑本段发展
PHP 于 19ISAPI 筛选器94 年由 Rasmus Lerdorf 创建,刚刚开始只是一个简单的用 Perl 语言编写的程序,用来统计他自己网站的访问者。
后来又用 C 语言重新编写,包括可以访问数据库。
在 1995 年以Personal Home Page Tools
PHP Tools 开始对外发表第一个版本,Lerdorf 写了一些介绍此程序的
文档,并且发布了
PHP1.0。
在这早期的版本中,提供了访客留言本、访客计数器等简单的功 能。
以后越来越多的网站使用了
PHP,并且强烈要求增加一些特性,比如循环语句和数组变量等 等,在新的成员加入开发行列之后,在 1995 年中,
PHP2.0 发布了。
第二版定名为
PHP/FIForm Interpreter。
PHP/FI 加入了对 mySQL 的支持,从此建立了
PHP 在动态网页开发上的地位。
有 到了 1996 年底, 15000 个网站使用
PHP/FI;1997 年中,使用
PHP/FI的网站数字超过五万个。
而在 1997 年中,开始了第三版的开发计划,开发小组加入了 ZeevSuraski 及 Andi Gutmans,而第三版就定名为
PHP3。
2000 年,
PHP4.0 又问世了,其中增加了许多新的特性。
PHP 的简称原本为 Personal Home Page,是 Rasmus Lerdorf 为了要维护个人网页,而用 c 语言开发的一些 CGI 工具程序集,来取代原先使用的 Perl 程序。
最初这些工具程序用来显示 Rasmus Lerdorf 的个人履历,以及统计网页流量。
他将这些程序和一些表单直 译器整合起来,称为
PHP/FI。
PHP/FI 可以和数据库连接,产生简单的动态网页程序。
RasmusLerdorf 在 1995 年 6 月 8 日将
PHP/FI 公开释出,希望可以透过社群来加速程序开发与寻找错误。
这个释出的版本命名为
PHP 2,已经有今日
PHP 的一些雏型,像是类似 Perl 的变量命名方式、 表单处理功能、 以及嵌入到 HTML 中执行的能力。
程序语法上也类似 Perl,有较多的限制,不过更简单、更有弹性。
在 1997 年,任职于 Technion IIT 公司的两个以色列程 序设计师:Zeev Suraski 和 AndiGutmans,重写了
PHP 的剖析器,成为
PHP 3 的基础,而
PHP 也在这个时候改称为
PHP:Hypertext Preprocessor.5。
经过几个月测试,开发团队在 1997 年 11 月释出了
PHP/FI 2,随后就开始
PHP 3 的开放测试,最后在 1998 年 6 月正式释出
PHP 3。
Zeev Suraski 和 AndiGutmans 在
PHP 3 释出后开始改写PHPPHP 的核心,这个在 1999 年释出的剖析器称为 Zend Engine7,他们也在以色列的 RamatGan 成立了 Zend Technologies 来管理
PHP 的开发。
在 2000 年 5 月 22 日,以 Zend Engine 1.0 为基础的
PHP 4 正式释出,2004 年 7 月 13日则释出了
PHP 5,
PHP 5 则使用了第二代的 Zend Engine5。
PHP 包含了许多新特色,像 、以是强化的面向对象功能、引入 PDO(
PHP Data Objects,一个存取数据库的延伸函数库)及许多效能上的增强。
目前
PHP 4 已经不会继续更新,以鼓励用户转移到
PHP 5。
2008 年
PHP 5 成为了
PHP 唯一的有在开发的
PHP 版本。
将来的
PHP 5.3 将会加入 Latestatic binding 和一些其他的功能强化。
PHP 6 的开发也正在进行中,主要的改进有移除register_globals、magic quotes 和 Safe mode 的功能。
编辑本段特性
PHP 的特性包括
PHP: 1、开放的源代码: 所有的
PHP 源代码事实上都可以得到。
2、
PHP 是免费的。
和其它技术相比,
PHP 本身
免费。
3、
php 的快捷性 程序开发快,运行快,技术本身学习快。
嵌入 HTML:因为
PHP 可以嵌入
HTML 语言,它 相对于其他语言,编辑简单,实用性强,更适合初学者。
4、跨平台性强: 由于
PHP 是运行在服务器端的脚本可以运行在 UNIX、LINUX、WINDOWS 下。
5、效率高:
PHP 消耗相当少的系统资源。
6、图像处理: 用
PHP 动态创建图像 7、面向对像: 在
php4
php5 中,面向对象方面都有了很大的改进,现在
php 完全可以用来开发大型商业程序。
8、专业专注;
PHP 支持脚本语言为主,同为类 C 语言。
编辑本段技术应用 1,伪静态 2,静态页面生成 3,数据库缓存 4,过程缓存 5,
divcss w3c 标准 6,大负荷 7,分布式 8,jquery 框架集成 9,flex 10,桌面
程序应用编辑本段
PHP 3 与
PHP 4
PHP3
PHP3 跟 Apache 服务器紧密结合的特性;
PHP加上它不断的更新及加入新的功能;而且几乎支持所有主流与非主流数据库;再以它能高速的执行效率,使得
PHP 在 1999 年中的使用站点已经超过了 150000。
加上它的
源代码完全公开,在 Open Source 意识抬头的今天,它更是这方面的中流砥柱。
不断地有新的函数库加入,以及不停地更新的活力,使得
PHP 无论在 UNIX、LINUX 或是 Windows 的平台上都可以有更多新的功能。
它提供丰富的函数,使得在程序设计方面有着更好的支持。
PHP4
PHP4.0 整个脚本程序的 核心大幅更动,让程序的执行速度,满足更快的要求。
在最佳化之后的效率,已较传统 CGI 或者 ASP 等程序有更好的表现。
而且还有更强的新功能、更丰富的函 数库。
无论您接不接受,
PHP 都将在 Web CGI 的领域上,掀起巅覆性的革命。
对于一位专业的 Web Master 而言,它将也是必修
课程之一。
PHP 4.0 是更有效的,更可靠的动态 Web 页开发工具,在大多数情况运行比
PHP 3.0 要快,其脚本描述更强大并且更复杂 最显著的特征是速率比的增加。
PHP4.0 这些优异的性能是
PHP 脚本引擎重新
设计产生的结果:引擎由 AndiGutmans 和 Zeev Suraski 从底层全面重写。
PHP4.0 脚本引擎 ——Zend 引擎,使用了一种更有效的编译——执行方式 而不是
PHP 3.0 采用的执行 ——当解析时模型。
PHP4 的优越性:
PHP4 在 3.0 版的基础上增加或增强了许多有用的特征,主要如下: (1)别名:在
PHP4 中,可以利用引用为变量赋值,这给编程带来了很大的灵活性。
(2)扩充了 API 模块:
PHP 4.0 为扩展的 API 模块的提供了扩展
PHP 接口模块 它比旧的 API 版本显著地快。
PHP 模块已有的及最
常用的接口多数被转换到使用这个扩展的接口。
(3)自动资源释放:
PHP4 增加了引用计数功能,这种新技术的引入使
PHP4 具有了自动内存管理功能减轻了开发人员的负担。
(4)布尔类型:
PHP 4.0 支持布尔类型。
(5)进程生成:在 UNIX 环境下的
PHP 4.0 提供了一个很智能和通用的生成进程 使用了一种名为基于 automake/libtool 的系统生成技术。
(6)COM/DCOM 支持:
PHP 4.0 提供 COM/DCOM 支持 仅用于 Windows 环境 可以无缝地存取和访问 COM 对象。
(7)与
PHP 3.0 兼容性很好:
PHP 4.0 是与
PHP 3.0 代码向后兼容性接近 100 。
由于
PHP 4 的改进的体系结构两者有一些细微的差别,但是大多数人将可能永远不可能遇上这种情况。
(8)配置 :
PHP4 重新设计和增强了
PHP.ini 文件这使得用
PHP.ini 来配置
PHP 显得极为容易这个文件可以在运行时被 Apacheunix 系统或由 Windows 注册Windows 环境。
(9)加密支持:
PHP4 实现了完整的加密 这些加密功能是一个完整的 mycrypt 库,并且
PHP 4.0 支持哈希函数。
Blowfish,TripleDESMD5并且 SHA1 也是可使用的一些加密算法。
(10)类型检查:
PHP 4.0 支持同一操作符用于评类型检查:( 3 等号运算符 )为在两个值和其类型之间作检查。
例如 3 3 将视为假 类型是不同的 而 3 3 相等判断 将视为真。
(11)FTP 支持:
PHP 4.0 支持 FTP 。
通常 你会为通过一个调制解调器连接下载一个大文件提供一个接口。
然而 如果你确实有需要,可以使用
PHP 。
(12)
PHP4 新增函数或功能增强函数:
PHP 4.0 新增了许多函数同时也将许多现有的函数功能进行了增强,以下是一些例子 。
array_count_values eval foreach includeob_end_clean ob_end_flush ob_get_contents ob_start strip_tags unset (13)here 打印:
PHP 4.0 的 Here 打印是与 Perl 类似的 尽管完全不相同。
Here 是打印大容量文章的一个有用的方法例如在 HTML 文件中,不会漏掉任何一个字符,例如目录标记。
(14)HTTP Session fallback
系统:为 HTTP Session 管理的一个 fallback 系统在
PHP 缺省情况下,4.0 被实现 。
如果没有 cookies 支持或一项 cookies Session 标识符由 cookies 存储。
任务失败,Session 标识符自动被创建并在 URL 的查询字符串中被携带。
(15)ISAPI 支持: 这
PHP 4.0 能作为一个个性化的 ISAPI 模块作为 IIS 插件 。
比
PHP3.0 更有效 它作为一个外部的程序来运行。
(16)内存:
PHP 4.0 能更有效的使用内存 导致较少的内存占用消耗这主要归功于引用计数技术的实现。
PHP(17)其他类成员函数:在
PHP 4.0 你能在成员函数本身的作用域或全局范围内调用其他类的成员函数。
例如你能用一个子函数覆盖父函数并在子函数中调用父函数。
(18)多维数组:在
PHP 4.0 ,利用 GET,POSTCookies 的进行的数据传输支持多维数组。
(19)个性化的 HTTP Session 支持:HTTP Session 处理 包括 fallback 系统管理,在
PHP 4.0 被它的新库函数实现 。
在版本 3.0 中处理 Session 要求使用 PHPLIB 和第三方的库函数 它比把 Session 直接地由
PHP 支持慢了许多。
(20)个性化的 Java 支持:
PHP 4.0 支持和 java 的交互。
这种个性化的 Java 支持为
PHP 在
Java 对象上创建和使用方法提供一个简单并且有效的工具。
21)对象和数嵌套组:
PHP 4.0 实现了功能更加强大的对象 移去了
PHP 3.0 存在的种种句法限制。
对象能在数组以内被嵌套并且反过来也如此 可以根据你的需要实现嵌套。
(22)面向对象的编程:
PHP 4.0 为面向对象的编程和构造类及对象提供扩展的功能和新特征。
PHP4 实现了对象重载引用技术等新技术。
(23)对象重载支持:对象重载语法允许第三方的基于面向对象的类库使用
PHP4 的面向对象的特征存取他们自身的功能。
使用这个特征的一个 COM 模块已经被实现了。
(24)输出缓冲支持:
PHP 提供了一个输出缓冲函数集合。
输出缓冲支持允许你写包裹函数功能
压缩缓冲区。
在
PHP4 的输出缓冲支持允许 HTML 头信息存放 无论 HTML的正文是否输出。
头信息 header content type and cookies 不采用缓冲 。
(25)增加了 PCRE 库:
PHP 4.0 包括一个 Perl 兼容的正则表达式 PCRE 库 和正常 regex 库一起与
PHP 绑定。
split 和 replace PCRE 功能被支持。
PCRE 和 Perl 正规表达式之间有一些细微差别。
(26)
PHP.ini 文件:
PHP.ini 文件在
PHP4.0 被重新设计 使用的
PHP 的配置
PHP.ini是更容易并且更有效的。
全部文件能被 Apache 在运行时间操作 在 Apache 环境 下 或 被由 Windows
注册表 在 Windows 下面 。
加 入
PHP.ini 文件的配置指令自动地在所有相关的模块中被支持。
(27)引用计数:
PHP 4.0 为系统中的每个数值提供了引用计数 包括资源。
一旦一个资源不再被任何变量引用, 它自动地被释放以节省内存资源。
利用这个特征的最明显的例子一个内置 SQL
查询的循环语句。
在
PHP 3.0 中 ,每次递归另外的 SQL 结果集合重复申请内存,直到脚本执行完毕这些结果集合占用的内存才被释放。
(28)支持引用:通过引用可以改变一个变量的值。
(29)函数的运行时绑定:
PHP 4.0 的运行时间绑定功能允许你在他们被声明以前调用无论声明是否在代码以后或是在运行时间。
(30)类的运行时信息:
PHP 4.0 支持在运行时刻存取下列类信息:一个对象的类名,一个对象的父类的类名字,以及对象函数所在的名字。
(31)服务器抽象层:为支持 Web 服务器提供了增强型 SAPI 服务器 API 接口是
PHP 4。
0 不可分的一部分。
这个服务器抽象层提供了通用的 WEB 服务器接口支持支持多线程 WEB 服务器为大多数的 WEB 服务器提供透明的支持 这些服务器包括 Apache IIS ISAPI 以及 AOL 服务器。
(32) 语法的点亮显示:
PHP 4.0 语法的点亮显示允许开发者看见源代码而不是脚本 这个功能比
PHP 3。
0 中的更有效。
它跑得更快,更执行得更好,并且产生更紧凑的 HTML 代码。
(33)由引用改变变量的值:
PHP 4.0 由引用支持可变的赋值 “关联”的 2 个变量之中个的任何一个的值被改变另外的变量的值同样被改变这类似与 C 中的指针类型。
(34)在引用字符串中的变量引用:
PHP 4.0 增强了在引用字符串中的变量引用。
编辑本段
PHP5
PHP5 在长时间的开发及多个预发布版本后,2004 年 7 月 13 日,
PHP5.0 发布。
该版本 。
以 Zend 引擎Ⅱ为引擎,并且加入了新功能如
PHP Date Objects(PDO)现 在
PHP5.0 版本强化更多的功能。
首先,完全实现面向对象,提供名为
PHP 兼容模式的功能。
其次是 XML功能,
PHP5.0 版本支持可直观地访问 XML 数据、名为 SimpleXML 的 XML 处理用界面。
同时还强化了 XML Web 服务支持,而且标准支持 SOAP 扩展模块。
数据库方面,
PHP 新版本提供旨在访问 MySOL 的新界面——MySQL。
除此前的界面外,还可以使用面向对象界面和预处理语句(Prepared Statement)等 MySQL 的新功能.另外 ,
PHP5.0 上还捆绑有小容量 RDBMS-SQLite.1、新的对象模式 New Object Mode
PHP5 中的对象已经进行了较系统、较全面的调整,现在的样子可能看起来会有些类似于 Java。
本小节着重讲述
PHP5 中新的对象模式,并举了一些较简易的例子来说明。
就让 :本节成为你的
PHP5 之旅的一个新起点吧。
) 构造函数和析构函数 对象的引用 对象的克隆 对象中的私有、公共及受保护模式 接口 Interfaces 抽象类 __call __set 和 __get 静态成员 构造函数和析构函数 在
PHP4 中,当函数与对象同名时,这个函数将成为该对象的构造函数,并且在
PHP4中没有析构函数的概念。
在
PHP5 中,构造函数被统一命名为 __construct,并且引入了析构函数的概念,被统一命名为 __destruct。
对象的引用 在
PHP4 中,传递变量给一个函数或方法,实际是把这个变量做了一次复制,也就意味着你传给函 数或方法的是这个变量的一个副本,除非你使用了引用符号“amp” 来声明是要做一个引用,而不是一个 Copy。
在
PHP5 中,对象总是以引用的形式存在的,对象中的赋值操作同样也都是一个引用操作。
对象的克隆 当一个对象始终以引用的形式来被调用时,如果我想得到该对象的一个副本,该怎么办呢?
PHP5 提供了一个新的功能,就是对象的克隆,语法为 __clone。
对象中的私有、公共及保护模式
PHP4 中,一个对象的所有方法和变量都是公共的,这意味着你可以在一个对象的外部操作其中的任意一个变量和方法。
PHP5 引入了三种新的用来控制这种存取权限的模式,它们是:公共的Public、受保护的Protected及私有的Private。
公共模式Public:允许在对象外部进行操作控制。
私有模式Private:只允许本对象内的方法对其进行操作控制。
受保护模式Protected:允许本对象及其父对象对其进行操作控制。
接口 Interfaces
PHP4 中的对象支持继承,要使一个对象成为另一个对象的派生类, 你需要使用类似“class foo extends parent” 的代码来控制。
PHP4 和
PHP5 中,一个对象都仅能继承一次,多重继承是不被支持的。
不过,在
PHP5 中产生了一个新的名词:接口,接口是一个没有具体处理代码的特殊对象, 它仅仅定义了一些方法的名称及参数,此后的对象就可以方便的使用 implement 关键字把需要的接口整合起来,然后再加入具体的执行代码。
这对提高代码的可读性及通俗性有很大的帮助, 通过上面的例子可以看到,对象 foo 包含了 displayable 和 printable 两个接口,这时我们就可以清楚的知道,对象 foo 一定会有一个 display 方法和一个 print 方法,只需要去了解接口部分,你就可以轻易的操作该对象而不必去关心对象的内部是如何运作的。
抽象类 抽象类不能被实例化。
抽象类与其它类一样,允许定义变量及方法。
抽象类同样可以定义一个抽象的方法,抽象类的方法不会被执行,不过将有可能会在其派生类中执行。
__call
PHP5 的对象新增了一个专用方法 __call,这个方法用来监视一个对象中的其它方法。
如果你试着调用一个对象中不存在的方法,__call 方法将会被自动调用。
__set 和 __get 这是一个很棒的方法,__set 和 __get 方法可以用来捕获一个对象中不存在的变量和方法。
类型指示 在
PHP5 中,你可以在对象的方法中指明其参数必须为另一个对象的实例。
静态成员 静态成员和静态方法在面象对象编程的术语中被称作 “类方法class methods” 和 “类变量class variables”。
“类方法” 在一个对象没有实例化前允许被调用。
同样,“类变量” 在一个对象没有实例化前可以被独立操作控制不需要用一个对象的方法来控制。
2、异常处理 Exceptions 异常处理是公认的处理程序错误的 理想方法,在 Java 及 C 中都有这个概念,我们欣喜的看到,在
PHP5 已经加入了这方面的应用。
你可以尝试使用 “try” 和 “catch” 来控制程序的错误。
当有错误发生的时候,代码会把错误交给 “catch” 子句来处理,在 “catch” 子句中,你需要指明要把错误交给某个对象处理,这样做可以使代码结构看起来更清晰,因为现在我们可以把所有的错误信息交给一个对象来处理。
自定义错误处理 你可以很方便的用自定义的处理错误的代码来控制你的程序中的意外。
你仅仅需要从异常类中派生出一个自己的错误控制类,在你自己的错误控制类中,你需要有一个构造函数和一个 getMessage 方法。
3、名称空间 Namespace 名称空间对类的分组或函数分组很有用。
它可以把一些相关的类或函数给组合到一起,方便以后调用。
例:名称空间 ltphp namespace Math class Complex //...code... function __construct printquotheyquot m new Math::Complex gt 注意你需要在何种情况下使用名称空间,在实际运用中,你可能会需要声明两个或多个名称一样的对象来做不同的事情,那么你就可以把他们分别放到不同的名称空间中去(但接口是要相同的)。
编辑本段
PHP6 设想1.支持 Unicode 支持 Unicode 是有其必然,虽然 Unicode 占用较多的空间,但 Unicode 带来的便利性,远超过占用空间的缺点,尤其在国际化的今天,硬件设 备越来越强大,网速也大幅度的提升,这么一点小小的缺点是可以忽略的。
另外一点,
PHP 也可以在.ini 文件中设定是否开启支持 Unicode,决定权在 你自己,这是一个不错的点子,关掉 Unicode 的支持,
PHP 的性能并不会有大幅度的提升,主要的影响在于需要引用字符串的函数。
.2.Register Globals 将被移除 这是一个重要的决定,说多新进的
PHP 开发者会觉得 RegisterGlobals 满方便的,但是却忽略了 RegisterGlobals 会带来程序上 安全性的隐患,大多数的主机上此项功能是关闭的,印象
PHP4.3.x 版开始时,此项默认设置值即是关闭状态,
PHP6 正式移除 RegisterGlobals也代表着如果程序是由
PHP3 时代的产物,将完全无法使用,除了改写一途外,别无他法。
相信现在的
PHP 世界里,仍使用
PHP3 时代所产生的程序应该是少之又少。
3.Magic Quotes 将消失 Magic Quotes 主要是自动转义需要转义的字符,此项功能移除也符合大多数
PHP 开发者的心声。
4.Safe Mode 取消 老实说,这个模式不知道哪里不好,取消就取消吧,反正也用不到5.var 别名为 public 在类中的 var 声明变成 public 的别名,相信是为了兼容
PHP5 而作的决定,
PHP6 现在也可以称作为 OO 语言了。
6.通过引用返回将出错 现在透过引用返回编译器将会报错 例如a amp new b、function ampc,OO 语言默认就是引用,所以不需要再使用amp了。
7.zend.ze1 compatbility mode 将被移去 Zend.ze1 相容模式将被移去,
PHP5 是为兼容旧有
PHP4,所以在.ini 中可选择是否开启相容模式,原因在于
PHP5 .