一、PHP概述二、PHP基础三、面向对象思想四、面向对象的PHP五、字符串和正则表达式六、PHP专题相关七、PHP常用API分类汇总八、MVC框架及模板九、PHP网站部署及安全十、PHP网站常见模块(非框架版)十一、PHP网站常见模块(TP框架版)十二、用PHP+Mysql构造网站系统案例(详细设计文档)一、PHP概述PHP(“PHP:HypertextPreprocessor”,超文本预处理器的字母缩写)是一种被广泛应用的开放源代码的多用途脚本语言,它可嵌入到HTML中,尤其适合web开发。和客户端的JavaScript不同的是,PHP代码是运行在服务端的。使用PHP的一大好处是它对于初学者来说极其简单,同时也给专业的程序员提供了各种高级的特性。PHP主要是用于服务端的脚本程序,因此可以用PHP来完成任何其它的CGI程序能够完成的工作,例如收集表单数据,生成动态网页,或者发送/接收Cookies。但PHP的功能远不局限于此。PHP脚本主要用于以下三个领域:服务端脚本。这是PHP最传统,也是最主要的目标领域。开展这项工作需要具备以下三点:PHP解析器(CGI或者服务器模块)、web服务器和web浏览器。需要服务器时,安装并配置PHP,然后,可以用web浏览器来访问PHP程序的输出,即浏览服务端的PHP页面。如果只是实验PHP编程,所有的这些都可以运行在自己家里的电脑中。请查阅安装一章以获取更多信息。命令行脚本。可以编写一段PHP脚本,并且不需要任何服务器或者浏览器来运行它。通过这种方式,仅仅只需要PHP解析器来执行。这种用法对于依(Unix或者Linux环境)或者TaskScheduler(Windows环境)的日常运行的脚本来说是理想的选择。这些脚本也可以用来处理简单的文本。请参阅PHP的命令行模式以获取更多信息。编写桌面应用程序。对于有着图形界面的桌面应用程序来说,PHP或许不是一种最好的语言,但是如果用户非常精通PHP,并且希望在客户端应用程序中使用PHP的一些高级特性,可以利用PHP-GTK来编写这些程序。用这种方法,还可以编写跨平台的应用程序。PHP-GTK是PHP的一个扩展,在通常发布的PHP包中并不包含它。如果对PHP-GTK感兴趣,请访问其»网站以获取更多信息。PHP能够用在所有的主流操作系统上,已经支持了大多数的web服务器,使用PHP,可以自服务器。同时,还可以在开发时选择使用面对过程和面对对象,或者两者混和的方式来开发。尽管PHP4不支持OOP所有的标准,但很多代码仓库和大型的应用程序(包括PEAR库)仅使用OOP代码来开发。PHP5弥补了PHP4的这一弱点,引入了完全的对象模型。使用PHP,并不局限于输出HTML。PHP还能被用来动态输出图像、PDF文件甚至Flash动画(使用libswf和Ming)。还能够非常简便的输出文本,例如XHTML以及任何其它形式的XML文件。PHP能够自动生成这些文件,在服务端开辟出一块动态内容的缓存,可以直接把它们打印出来,或者将它们存储到文件系统中。PHP最强大最显著的特性之一,是它支持很大范围的数据库。同时还有一个叫做PDO的数据库抽象扩展库使得可以自由地使用该扩展库支持的任何数据库。另外,PHP还支持ODBC,即OpenDatabaseConnectionStandard(开放数据库连接标准),因此可以连接任何其它支持该世界标准的数据库。PHP还支持利用诸如LDAP、IMAP、SNMP、NNTP、POP3、HTTP、COM(Windows环境)等不计其数的协议的服务。还可以开放原始网络端口,使得任何其它的协议能够协同工作。PHP支持和所有web开发语言之间的WDDX复杂数据交换。关于相互连接,PHP已经支持了对Java对象的即时连接,并且可以将他们自由的用作PHP对象。甚至可以用我们的CORBA扩展库来访问远程对象。PHP具有极其有效的文本处理特性,支持从POSIX扩展或者Perl正则表达式到XML文档解析。为了解析和访问XML文档,PHP4支持SAX和DOM标准,也可以使用XSLT扩展库来转换XML文档。PHP5基于强健的libxm2标准化了所有的XML扩展,并添加了SimpleXML和XMLReader支持,扩展了其在XML方面的功能。另外,还有很多其它有趣的扩展库。例如mnoGoSearch搜索引擎函数、IRC网关函数、多种压缩工具(gzip、bz2、zip)、日历转换、翻译……如果需要自己配置服务器和PHP,有两个方法将PHP连接到服务器上。对于很多服务器,PHP均有一个直接的模块接口(也叫做SAPI)。这些服务器包括Apache、MicrosoftInternetInformationServer、Netscape和iPlanet等服务器。其它很多服务器支持ISAPI,即微软的模块接口(OmniHTTPd就是个例子)。如果PHP不能作为模块支持web服务器,总是可以将其作为CGI或FastCGI处理器来使用。这意味着可以使用PHP的CGI可执行程序来处理所有服务器上的PHP文件请求。对于PHP的安装和配置需要说明的是,不同版本的PHP和服务器、数据库组件之间的装配方法并不统一,需要根据不同版本安装,有关各模块最新版本之间的搭配组合安装参见一般PHP在不同环境下的安装配置配置文件(PHP3中是php3.ini,自PHP4起是php.ini)在PHP启动时被读取。对于服务器模块版本的PHP,仅在web服务器启动时读取一次。对于CGI和CLI版本,每次调用都会读取。更多关于PHP配置文件的说明请参阅手册或网络二、PHP基础2.1基本语法开始和结束标记:共有4种不同的界定形式,其中两种,?php?和scriptlanguage=php/script总是可用的,另两种是短标记??和ASP风格标记%%,可以在php.ini配置文件中打开或关闭。为了代码的移植及发行,确保不要使用短标记。和asp标记。指令分隔符:PHP需要在每个语句后用分号;结束指令,在一个PHP代码段中的最后一行可以不用分号结束。注释:单行#或//多行/**/数据类型:PHP支持8种基本的数据类型。四种标量类型:boolean(布尔型)integer(整型)float(符点型,也称作double)string(字符串)两种复合类型:array(组)object(对象)两种特殊类型:resource(资源)NULL(NULL)为了确保代码的易读性,手册还介绍了一些伪类型,mixed:说明一个参数可以接受多种不同的(但并不必须是所有的)类型。Number:说明一个参数可以是integer或者float。Callback:有些诸如call_user_function()或usort()的函数接受用户自定义的函数作为一个参数。Callback函数不仅可以是一个简单的函数,它还可以是一个对象的方法,包括静态类的方法。PHP在变量定义中不需要(或不支持)明确的类型定义;变量类型是根据使用该变量的上下文所决定的。关于类型之间的转换规则及注意事项参阅PHP手册,对于数组类型下面会详细讲到。变量:PHP中的变量用一个美元符号后面跟变量名来表示。变量名是区分大小写的。一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。按照正常的正则表达式,它将被表述为:'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'。变量默认总是传值赋值。虽然在PHP中并不需要初始化变量,但对变量进行初始化是个好习惯。未初始化的变量具有其类型的默认值。依赖未初始化变量的默认值在某些情况下会有问题,例如把一个文件包含到另一个之中时碰上相同的变量名。使用未初始化的变量会发出E_NOTICE错误,但是在向一个未初始化的数组附加单元时不会。isset()语言结构可以用来检测一个变量是否已被初始化。PHP将会自动将变量名中的点替换成下划线。PHP包括几个函数可以判断变量的类型,例如:gettype(),is_array(),is_float(),is_int(),is_object()和is_string()。关于PHP系统的预定义变量等更多变量内容参见PHP手册常量:定义常量define()函数通过给一个变量名赋值来定义一个常量,其形式如下:booleandefine(stringname,mixedvalue[,boolcase_insensitive]),如果使用可选参数caseinsensitive,并且这个参数值为下RUE,那么后面对此常量的引用将不区分大小写。常量的范围是全局的。魔术常量:有七个魔术常量它们的值随着它们在代码中的位置改变而改变。这些特殊的常量不区分大小写__LINE__文件中的当前行号。__FILE__文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。自PHP4.0.2起,__FILE__总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。__DIR__文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP5.3.0中新增)=__FUNCTION__函数名称(PHP4.3.0新加)。自PHP5起本常量返回该函数被定义时的名字(区分大小写)。在PHP4中该值总是小写字母的。__CLASS__类的名称(PHP4.3.0新加)。自PHP5起本常量返回该类被定义时的名字(区分大小写)。在PHP4中该值总是小写字母的。__METHOD__类的方法名(PHP5.0.0新加)。返回该方法被定义时的名字(区分大小写)。__NAMESPACE__当前命名空间的名称(大小写敏感)。这个常量是在编译时定义的(PHP5.3.0新增)关于系统的预定义常量参见PHP手册表达式&运算符:最精确的定义一个表达式的方式就是“任何有值的东西”。运算符是可以通过给出的一或多个值(用编程行话来说,表达式)来产生另一个值(因而整个结构成为一个表达式)的东西。有三种类型的运算符。第一种是一元运算符,只运算一个值,例如!(取反运算符)或++(加一运算符)。第二种是有限二元运算符,PHP支持的大多数运算符都是这种。第三种是三元运算符:?:。它应该被用来根据一个表达式在另两个表达式中选择一个,而不是用来在两个语句或者程序路线中选择。把整个三元表达式放在扩号里是个很好的主意。有关具体运算符和其优先级参见PHP手册控制结构:基本的控制结构同c语言,其他像foreach等将在后面具体说明函数:functionfunctionName(parameters){function一body}函数名是大小写无关的,不过在调用函数的时候,通常使用其在定义时相同的形式。一般函数必须在其调用之前定义。PHP支持按值传递参数(默认),通过引用传递参数以及默认参数。也支持可变数量的参数。返回语句会return()立即中止函数的运行,并且将控制权交回调用该函数的代码行。函数不能返回多个值,但可以通过返回一个数组来得到类似的效果。从函数返回一个引用,必须在函数声明和指派返回值给一个变量时都使用引用操作符&PHP支持可变函数的概念。这意味着如果一个变量名后有圆括号,PHP将寻找与变量的值同名的函数,并且尝试执行它。可变函数可以用来实现包括回调函数,函数表在内的一些用途。关于系统函数API参见PHP手册。三、面向对象思想面向对象编程(ObjectOrientedProgramming,OOP,面向对象程序设计)是一种计算机编程架构。OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。为了实现整体