PHP从入门到精通教程.docx
PHP从入门到精通教程标题:PHP基础教程出处:风流的CG网络日志时间:Mon,28Aug200607:24:34+0000yufeng地址:http:/read.php?38内容:提供应新手学习的PHP新手教程,是一个比拟有价值的PHP新手教程!一、PHP简介PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的WEB站点。本教程并不想让你完全了解这种语言,只是能使你尽快加入开发动态web站点的行列。我假定你有一些HTML或者HTML编辑器的基本知识和一些编程思想。1.简介PHP是能让你生成动态网页的工具之一。PHP网页文件被当作一般HTML网页文件来处理并且在编辑时你能够用编辑HTML的常规方法编写PHP。PHP代表:超文本预处理器PHP:HypertextPreprocessor。PHP是完全免费的,不用花钱,你能够从PHP官方站点(文档视界2022/40031cea5ef7ba0d4a733b90mabulndb3hg.html)自由下载。PHP遵守GNU公共许可GPL),在这一许可下诞生了很多流行的软件诸如Linux和Emacs。你能够不受限制的获得源码,甚至能够从中加进你本人需要的特色。PHP在大多数Unix平台,GUN/Linux和微软Windows平台上均能够运行。如何在Windows环境的PC机器或Unix机器上安装PHP的资料能够在PHP官方站点上找到。安装经过很简单。假如你的机器解决了2000问题,那么PHP也一样没有千年虫问题!1.1历史三年前,RasmusLerdorf为了创立他的在线简历而创造了"个人主页工具"PersonalHomePageTools。这是一种非常简单的语言。其后越来越多的人们注意到了这种语言并对其扩展提出了各种建议。在很多人的无私奉献下以及这种语言本身的源代码自由性质,它演变成为一种特点丰富的语言,而且如今还在成长中。PHP固然很容易学习,但是速度上比mod_perl植入web服务器的perl模块慢。如今有了能够与mod_perl速度想媲美的被称作Zend的新引擎,PHP4就能够充分利用这个引擎。而PHP4还处在BETA测试阶段。AndyGutmans和ZeevSuraki是Zend的主要作者。能够去Zend站点(文档视界2022/40031cea5ef7ba0d4a733b90mabulndb3hg.html)了解更多。PHP的应用在个人性质的web工程中增长显著。根据Netcraft在1999年10月的报告,有931122个域和321128个IP地址利用PHP技术。1.2PHP的先进之处应用PHP有很多好处。当然已知的不利之处在于PHP由于是开放源码项目,没有什么商业支持,并且由此而带来的执行速度缓慢直到PHP4之前。但是PHP的邮件列表很是有用而且除非你正在运行像Yahoo!或者文档视界2022/40031cea5ef7ba0d4a733b90mabulndb3hg.html这样的极受欢迎的站点,你不会感觉出PHP的速度与其他的有什么不同。最最少我就没有感觉出来!好了,让我们来看看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能够做到你想让它做到的一切而且无所不能!1.3竞争对手:ASP,mod_perl,JSP我当然不清楚ASP/JSP能做些什么。不过明确的是编写那样的代码有多简单,购买它们会有多昂贵以及它们需要多么昂贵和强大的硬件。假如你有什么中立的观点比方讲没有被SUN和Microsoft的百万美金所影响,请顺便通知我。据我所知,JSP基于Java,因而Java程序员能够轻松开场编码。ASP只是一个一般的引擎,具有支持多种语言的能力,不过默认的并且是最常用的还是VBScript。mod_perl与Perl一样强大,只是更快一些。二、PHP入门PHP站点的在线教程已经很棒了。在那里还有一些其他教程的链接。而本文的该部分将让你对PHP熟悉一点。我不可能做到没有任何遗漏,我的目的只在于能让你迅速开场你的PHP编程。2.1首要条件你首先必需要有一个正在工作着的支持PHP的web服务器。我假定在你的服务器上所有PHP文件的扩展名为.php3。2.2PHP的安装生成一个名为test.php3的文件,含有下面内容:然后在你的阅读器中打开此文件。看看这个页面你就知道你的PHP安装使用的选项了。2.3语法就像前面提到的一样,你能够混合编写你的PHP代码和HTML代码。因而你必须有办法将两者区别开来。下面就是你能够采用的几种方法。你能够选用其中一种你最适应的并且就这样坚持这种方法!从HTML中分离下面是能够使用的方法:语句与Perl和C一样,在PHP中用;来分隔语句。那些从HTML中分离出来的标志也表示语句的结束。注释PHP支持C,C+和Unix风格的注释方式:/*C,C+风格多行注释*/C+风格单行注释#Unix风格单行注释Hello,World!通过我们已经学过的知识,你能够编写一个最简单的程序输出一个也许是程序世界中最有名的词语:FirstPHPpage2.4数据类型PHP支持整数、浮点数、字符串、数组和对象。变量类型通常不由程序员决定而由PHP运行经过决定真是好的解脱!。但是类型可以以被函数cast或者settype()明确的设定。数值数值类型能够是整数或是浮点数。你能够用下面的语句来为一个数值赋值:$a=1234;#十进制数$a=-123;#负数$a=0123;#八进制数(等于十进制数的83)$a=0x12;#十六进制数(等于十进制数的18)$a=1.234;#浮点数"双精度数"$a=1.2e3;#双精度数的指数形式字符串字符串能够由单引号或双引号引出的字段定义。注意不同的是被单引号引出的字符串是以字面定义的,而双引号引出的字符串能够被扩展。反斜杠能够被用来分割某些特殊字符。举例如下:$first='Hello'$second="World"$full1="$first$second"#产生HelloWorld$full2='$first$second'#产生$first$second能够将字符和数字利用运算符号连接起来。字符被转化成数字,利用其最初位置。在PHP手册中有具体的例子。数组与哈希表数组与哈希表以同样的方法被支持。如何运用取决于你如何定义它们。你能够用list()或者array()来定义它们,可以以直接为数组赋值。数组的索引从0开场。固然我在这里没有讲明,但是你一样能够轻易的使用多维数组。/一个包含两个元素的数组$a0="first"$a1="second"$a="third"/添加数组元素的简单方法/如今$a2被赋值为"third"echocount($a);/打印出3,由于该是数组有3个元素/用一个语句定义一个数组并赋值$myphonebook=array("sbabu"=>"5348","keith"=>"4829","carole"=>"4533");/噢,忘了教长吧,让我们添加一个元素$myphonebook"dean"="5397"/你定义的carale元素错了,让我们更正它$myphonebook"carole"=>"4522"/我还没有告诉你如何使用数组的类似支持方式吗?让我们看一看echo"$myphonebook0/sbabuecho"$myphonebook1/5348其他一些对数组或哈希表有用的函数包括sort(),next(),prev()和each()。对象使用new语句产生一个对象:classfoofunctiondo_foo()echo"Doingfoo."$bar=newfoo;$bar->do_foo();改变变量类型在PHP手册中提到:"PHP不支持也不需要直接在声明变量时定义变量类型;变量类型将根据其被应用的情况决定。假如你为变量var赋值为一个字符串,那么它变成了一个字符串。假如你又为它赋了整数值,那么它就变成了整数。"$foo="0"/$foo是字符串(ASCII48)$foo+;/$foo是字符串"1"(ASCII49)$foo+=1;/$foo如今是整数(2)$foo=$foo+1.3;/$foo是一个双精度数(3.3)$foo=5+"10LittlePiggies"/$foo是一个整数(15)$foo=5+"10SmallPigs"/$foo是一个整数(15)假如想要强行转换变量类型,能够使用与C语言一样的函数settype()。2.5变量与常量可能你已经注意到,变量都有一个美元符号$的前缀。所有变量都是局部变量,为了使得定义的函数中能够使用外部变量,使用global语句。而你要将该变量的作用范围限制在该函数之内,使用static语句。$g_var=1;/全局范围functiontest()global$g_var;/这样就能够声明全局变量了更先进一些的是变量的变量表示。请参考PHP手册。这在有时会显得很有用。PHP内置了很多已定义的变量。你可以以用define函数定义你本人的常量,比方define("CONSTANT","value")。2.6运算符PHP具有C,C+和Java中的通常见到的运算符。这些运算符的优先权也是一致的。赋值同样使用"="。算术和字符下面只要一种运算符是有关字符的:$a+$b:加$a-$b:减$a*$b:乘$a/$b:除$a%$b:取模余数$a.$b:字符串连接逻辑和比拟逻辑运算符有:$a$b:或$aor$b:或$a&&$b:与$aand$b:与$axor$b:异或当$a或$b为true时为true,两者一样时为false!$a:非比拟运算符有:$a=$b:相等$a!=$b:不等$a$b:大于$a>=$b:大于等于与C一样PHP也有三重运算符?:。位操作符在PHP同样存在。优先权就和C以及Java一样!2.7控制流程构造PHP有着与C一样的流程控制。我将在下面大概介绍。if,else,elseif,if():endifif(表达式一).elseif(表达式二).else./或者像Python一样if(表达式一):.elseif(表达式二):.else:.endif;Loops.while,do.while,forwhile(表达式).do.while(表达式);for(表达式一;表达式二;表达式三)./或者像Python一样while(expr):.endwhile;switchswitch是对多重if-elseif-else构造的最好的替换:switch($i)case0:print"iequals0"case1:print"iequals1"case2:print"iequals2"break,continuebreak中断当前的循环控制构造。continue被用来跳出剩下的当前循环并继续执行下一次循环。require,include就像C中的#include预处理一样。你在require中指定的那个文件将替代其在主文件中的位置。在有条件的引用文件时,能够使用include()。这样就使得你能够将复杂的PHP文件分割成多个文件并且在不同需要时分别引用它们。2.8函数你能够像下面的例子一样定义本人的函数。函数的返回值能够是任何数据类型:functionfoo(变量名一,变量名二,.,变量名n)echo"Examplefunction.return$retval;所有PHP代码都能够出如今函数定义中,甚至包括对其他函数和类的定义。函数必须在引用之前定义。2.9类利用类模型建立类。能够参考PHP手册中对类的具体解释。classEmployeevar$empno;/员工人数var$empnm;/员工姓名functionadd_employee($in_num,$in_name)$this->empno=$in_num;$this->empnm=$in_name;functionshow()echo"$this->empno,$this->empnm"return;functionchangenm($in_name)$this->empnm=$in_name;$sbabu=newEmployee;$sbabu->add_employee(10,"sbabu");$sbabu->changenm("babu");$sbabu->show();三、从实例入手PHP的很多特点与其他软件或者工具有关。利用迄今为止我们所学到的PHP知识,我们可以试着建立一个简单交互的网站。利用这一经过我们又能够学到不少东西。好吧,我们如今开场专注于一个典型个人网站的建设。3.1计划一个站点一般一个个人站点包括一个欢迎页面、一个留言本页面、一个书签链接页面、一个计数器、联络信息,甚至还有照片集和一些音乐文件等等。让我们从一个标题页面、一个联络信息页面和一个简历页面开场。我们同样需要标准的通用的页面头部和底部。标题页面-front.html这里我们有一个非常简单的html文件:我的个人主页-欢迎我的个人主页欢迎欢迎来我的寒舍,固然这里如今暂时还没有什么。不过我希望马上就能够多起来。Copyright?我本人,1999联络信息页面-count.html同样我们又有了一个简单页面:我的个人主页-联络信息我的个人主页联络信息你能够通过1-800-PHP-INFO联络我Copyright?我本人,19993.2HTML到PHP从上面你能够看出,每个页面有一样的头部和底部。像上面那样每个页面都写入一样的信息在工作量少的时候还能够,但是想象一下当有100多页面且你需要全部更改其头部或底部时你要花费多大精神?一页一页的手工更改是一件多么冗长无趣的事情啊!所以我们应该为这些页面编写PHP的头部和底部文件,之后我们只要在每个HTML页面中引用它们就行了。我们将把这些include文件放在一个叫include的子目录下。下面我们就把这些站点的通用内容写进文件中。全站通用变量设定:common.inc通用页面头部:header.inc