PHPofficial网站
发展历程/PHP[超文本预处理器]
PHP原始为PersonalHomePage的缩写,已经正式更名为"PHP:HypertextPreprocessor"。注意不是“HypertextPreprocessor”的缩写,this种take名称放到定义中男捶被称作递归缩写。PHP于1994年由RasmusLerdorf创建,刚刚start是RasmusLerdorf为了要维护personal网page而制作的一个简单的用Perl语言编写的程序。this些工具程序用来displayRasmusLerdorf的personal履历,以及统计网page流量。后来又用C语言重新编写,包括sure访问数据库。他takethis些程序和一些表单直译器整合起来,称为PHP/FI。PHP/FIsure和数据库连接,产生简单的动态网page程序。
stay1995年以PersonalHomePageTools(PHPTools)start对外发表*版本,Lerdorf写了一些introduce此程序的文档。alsorelease了PHP1.0!staythis的版本中,provide了访客留言本、访客计数器等简单的功能。以后越来越多的网站使用了PHP,also强烈要求增加一些特性。比如循环语句和数组变量等等;stay新的成员加入开发行列之后,RasmusLerdorfstay1995年6月8日takePHP/FI公开release,hopesure透过社群来加速程序开发与寻找错误。this个release的版本命名为PHP2,已经有PHP的一些雏型,像是类似Perl的变量命名方式、表单处理功能、以及嵌入到HTML中执行的能力。程序语法上也类似Perl,有较多的限制,however更简单、更有弹性。PHP/FI加入了对MySQL的support,从此建立了PHPstay动态网page开发上的地位。到了1996年底,有15000个网站使用PHP/FI。
stay1997年,任职于TechnionIIT公司的两个以色列程序设计师:ZeevSuraski和AndiGutmans,重写了PHP的剖析器,成为PHP3的基础。而PHP也staythis个时候改称为PHP:HypertextPreprocessor。经过几个月test,开发teamstay1997年11月release了PHP/FI2。subsequently就startPHP3的开放test,较后stay1998年6月正式releasePHP3。ZeevSuraski和AndiGutmansstayPHP 3release后start男碢HP的核心,this个stay1999年release的剖析器称为ZendEngine,they也stay以色列的RamatGan成立了ZendTechnologies来管理PHP的开发。
stay2000年5月22日,以ZendEngine1.0为基础的PHP4正式release,2004年7月13日则release了PHP5,PHP5则使用了第二代的ZendEngine。PHP包含了许多新特色,像是强化的面向对象功能、引入PDO(PHPDataObjects,一个存取数据库难由旌数库)、以及许多效能上的增强。PHP4已经不会continueto update,以鼓励user转移到PHP5。
2008年PHP5成为了PHP*有stay开发的PHP版本。take来的PHP5.3take会加入Latestaticbinding和一些其他的功能强化。PHP 6的开发也正stay进行中,main的改进有移除register_globals、magicquotes和Safemode的功能。
2013年6月20日,PHP开发team自豪地宣布推出PHP5.5.0。此版本包含了大量男鹿δ芎bug修复。需要开发者特别注意的一点是不再supportWindowsXP和2003系统。
2014年10月16日,PHP开发team宣布PHP5.6.2可用。四securityrelevant的错误是固定staythis个版本,包括修复cve-2014-3668,cve-2014-3669和cve-2014-3670。All的PHP5.6鼓励userupgrade到this个版本。
开发工具/PHP[超文本预处理器]
集成开发环境是一种集成了Software开发过程中所需main工具的集成开发环境,其功能包括但不仅限于代码高亮、代码补全、调试、构建、版本控制等。一些常见的PHPIDEs如下:
ZendStudio:商业版,Zendofficial出品,基于eclipse
EclipsewithPDT:免费
Coda:商业版,in the light ofMacuser
NetBeans:免费,功能强大
PHPStorm:商业版
AptanaStudio:免费
PhpEd:商业版
KomodoIDE/Edit:IDE为商业版,Edit可免费使用
AdobeDreamweaver:商业版
除去集成开发环境,具备代码高亮功能的常见文本编辑器因其轻巧灵活也常被选作开发工具,例如:Notepad++、Editplus、SublimeText、Everedit(国人开发)等等。
类型/PHP[超文本预处理器]
phpsupport八种原始类型。
四种标量类型:
?boolean(布尔型)
?integer(整型)
?float(浮点型,也作“double”)
?string(字符串)
两指春侠嘈停
array(数组)、object(对象)
较后是两种特殊类型:
resource(资源)、NULL
为了确保代码的易读性,本手册还introduce了一些伪类型:
?mixed
?number
?callback
probably还会读到一些关于“双精度(double)”类型的参考。实际上double和float是相同的,由于一些history的reason ,this两个名称同时存stay。
变量的类型通常不是由程序员设定的,确切地说,是由php根据该变量使用的上下文stay运行时决定的。
注:if想查看某个表达式的值和类型,用var_dump()。
注:if只是想得到一个易读懂的类型的表达方式用于调试,用gettype()。要查看某个类型,不要用gettype(),而用is_type函数。
特性/PHP[超文本预处理器]
PHP的特性包括:
1.PHP独特的语法混合了C、Java、Perl以及PHP自创新的语法。2.PHPsure比CGI或者Perl更fast速的执行动态网page——动态page面方面,与其他的编程语言相比,
PHP是take程序嵌入到HTML文档中去执行,执行效率比完全生成htmL标记的CGI要高许多;
PHPhavevery强大的功能,All的CGI的功能PHP都能实现。
3.PHPsupport几乎All流行的数据库以及操作系统。
4.最重要的是PHPsure用C、C++进行程序的扩展。
优势/PHP[超文本预处理器]
1、开放的源代码:
All的PHP源代码事实上都sure得到。
2、PHP是免费的:
和其它技术相比,PHP本身免费且强源代码。
3、php的fast捷性:
程序开发fast,运行fast,技术本身学习fast。嵌入于HTML:becausePHPsure被嵌入于HTML语言,它相对于其他语言。编辑简单,实用性强,更适合初学者。
4、跨平台性强:
由于PHP是运行stayservice器端的脚本,sure运行stayUNIX、LINUX、WINDOWS、MacOS下。
5、效率高:
PHP消耗相当少的系统资源。
6、图像处理:
用PHP动态创建图像
7、面向对象:
stayphp4,php5中,面向对象方面都有了很大的改进,php完全sure用来开发大型商业程序。
8、专业专注:
PHPsupport脚本语言为主,同为类C语言。
技术应用/PHP[超文本预处理器]
1.伪静态
2.静态page面生成
3.数据库缓存
4.过程缓存
5.div+cssw3c标准
6.大负荷
7.分布式
8.flex
9.桌面程序应用(不擅长)
10.supportMVC模型
11.Smarty模版引擎
参考手册/PHP[超文本预处理器]
函数完整参考手册:
1 Array 函数 2 Calendar 函数
日历扩展包含了简化不同日历格式间的转换的函数。
3 Date/Time 函数
Date/Time 函数用于从 PHP 脚本运行的service器上获取日期和time并进行格式化。
4 Directory 函数
Directory 函数用于获得关于柯技捌淠谌莸男畔ⅰ
5 Error/Logging 函数
Error/Logging 函数用于对错误进行处理和记录。
6 Filesystem 函数
Filesystem 函数用于访问和操作文件系统。
7 Filter 函数
PHP 过滤器用于岳醋苑莝ecurity来源的数据(比如user输入)进行验证和过滤。
8 FTP 函数
FTP 函数通过文件传输agreement (FTP) provide对文件service器的客户端访问。
9 HTTP 函数
HTTP 函数用于对由 Web service器发送到浏览器男畔⒔行操作。
10 Libxml 函数
Libxml 函数和常量与 SimpleXML、XSLT 以及 DOM 函数黄鹗褂谩
11 Mail 函数
mail() 函数用于从脚本中直接发送电子邮件。
12 Math 函数
Math 函数能处理 integer 和 float 范围内的值。
13 杂项函数
We把不属于其他类别的函数归纳到杂项函数类别。
14 MySQLi 函数
MySQLi 函数用于访问 MySQL 数据库service器。
15 SimpleXML 函数 SimpleXML 扩展provide了一种获取 XML 元素的名称和文本的简单方式。 16 String 函数 17 XML Parser 函数 XML Parser 函数市砟创建 XML 解析器,并为 XML 事件定义句柄。 18 Zip File 函数 Zip File 函数市砟读取压缩文件。
版本对比/PHP[超文本预处理器]
PHP版本VC6与VC9、ThreadSafe与None-ThreadSafe等的区别
PHP的大版本main分三支:PHP4/PHP5/PHP6
among,PHP4由于太古老、对QQsupport不力已基本被淘汰,请无视PHP4。
PHP6由于基本没有生产线上的应用,还基本只是一款概念product,很多功能已stayPHP5.3.3上实郑所以也不详述,请无视PHP6。
PHP5的版本main分四支:PHP5.2之前的版本、PHP5.2.X、PHP5.3簂eg涨皉elease的PHP5.4。
choice版本
PHP5.2之前的版本不值得考虑,because某些功能缺陷或者BUG。PHP5.4还处于Beta试用的版本号,非稳定版本,请无视PHP5.4。
主流PHP程序对PHP5.2.X的兼容性*,而看伟姹竞诺膗pgrade带来的都是security性和稳定性的改善,所以宜挑选*版本。目前PHP5.2系列*是PHP5.2.17。
而ifproduct是own开发own使用,PHP5.3stay某些方面更具优势,stay稳定性上更胜一筹,增加了很多PHP5.2所不have的功能,比如内置php-fpm、更完善的垃圾回收算法、命名空间的引入、sqlite3的support等等,是部署项目值得考虑的版本,强烈推荐PHP5.3.3。
除了版本号的不同,同一版本号的PHP版本也有区别,alsostaychoicePHP扩展的时候需要注意。
install版:可执行的MSI格式安装包。
ZIP版:解压即可用。和install版无区别。建议choiceZIP版。
DEBUG版:最终user无需care for。
VC6与VC9
if你stayapache1或者apache2下使用PHP,你应该choiceVC6的版本
if你stayIIS下使用PHP应该choiceVC9的版本,VC6的版本使用visualstudio6编译,VC9使用VisualStudio2008编译,also改进了性能和稳定性。VC9版本的PHP需要你安装Microsoft2008C++Runtime。不要stayapache下使用VC9的版本。
TS和NTS
TS指ThreadSafety,即线程security,commonlystayIIS以ISAPI方式加载的时候choicethis个版本。
NTS即None-ThreadSafe,commonly以fastcgi方式运行的时候choicethis个版本,have更好男阅堋
从2000年10月20日release的*Windows版的PHP3.0.17start的都是线程security的版本,this是由于与Linux/Unix系统是采用多进程的工作方式不同的是Windows系统是采用多线程的工作方式。ifstayIIS下以CGI方式运行PHP会very慢,this是由于CGI模式是建立stay多进程的基础之上的,而非多线程。commonlyWe会把PHP配置成以ISAPI的方式来运行,ISAPI是多线程的方式,this样就fast多了。但存stay一个problem,很多常用的PHP扩展是以Linux/Unix的多进程思想来开发的,this些扩展stayISAPI的方式运行时就会出错搞垮IIS。thereforestayIIS下CGI模式才是PHP运行的最security方式,但CGI模式对于每个HTTP请求都需要重新加载和卸载整个PHP环境,其消耗是巨大的。
为了兼顾IIS下PHP男率和security,微软给出了FastCGI的解决programme。FastCGIsure让PHP的进程重复利用而不是每一个新的请求就重开一个进程。同时FastCGI也sure市砑父鼋程同时执行。this样既解决了CGI进程模式消耗太大的problem,又利蒙狭薈GI进程模式不存stay线程securityproblem的优势。
therefore,if是使用ISAPI的方式来运行PHP捅匦胗肨hreadSafe(线程security)的版本;而用FastCGI模式运行PHP的话就没有必要孟叱蘳ecurity检查了,用NoneThreadSafe(NTS,非线程security)的版本能够更好的提高效率。
查看版本
一个很简单的办法就是phpinfo();
ThreadSafetydisabled是NTS,enabled是TS
ConfigureCommand看到VC98字样的是VC6,Compiler标明MSVC9(VisualC++2008)的是VC9
stayWIN7下:IIS7+NTS+FastCGI+vc9是*搭档或者apache+fastcgi+nts+vc6。
stayWINXP下:Apache+TS+Apachemodule+vc6最合适的搭档。
PHP3/PHP[超文本预处理器]
PHP3跟Apacheservice器的紧密结合的特性;由纤黶ure不断的to update及加入新的功能,and几乎supportAll主流与非主流数据库。再以它能高速的执行效率,使得PHPstay1999年中的使用站点已经超过了150000。由纤的源代码完全公开,stayOpenSource意识抬头的今天,它更是this方面的中流浦。不断地有新的函数库加入,以及不停地to update的活力。使得PHP无论stayUNIX、LINUX或是Windows的平台上都sure有more新的功能。它provide丰富的函数,使得stay程序设计方面有着更好的support。
PHP4/PHP[超文本预处理器]
简介
PHP4.0整个脚本程序的核心大幅更动,让程序的执行speed,满足更fast的要求。stay*化之后男率,已较传统CGI或者ASP等程序有更好的表现。and还有更强男鹿δ堋⒏丰富的函数库。无论您接不accept,PHP都takestayWebCGI的领域上,掀起巅覆性的革命。对于一位专业的WebMaster而言,它takeSo is it必修课程之一。
PHP4.0是更有效的,更可康亩态Webpage开发工具,stay大多数情况运行比PHP3.0要fast,其脚本描述更强大also更复杂,最显著的特征是速率比的增加。PHP4.0this些优斓男阅苁荘HP脚本引擎重新设计产生的结果:引擎由AndiGutmans和ZeevSuraski从底层全面重写。PHP4.0脚本引擎——Zend引擎,使用了一指有效的编译——执行方式,而不是PHP3.0采用的执行——当解析时模型。
优越性
PHP4stay3.0版的基础上增加或增强了许多有用的特征,main如下:
(1)别名:stayPHP4中,sure利用引梦变量赋值,this给编程带来了很大的灵活性。
(2)扩充了API模块:PHP4.0为扩展的API模块的provide死┱筆HP接口模块,它比旧的API版本显著地fast。PHP模块已有的及最常用的接口多数被转换到使用this个扩展的接口。
(3)自动资源释放:PHP4增加了引用计数功能,this种新技术的引入使PHP4have了自动内存管理功能,减轻了开发人员的负担。
(4)布尔类型:PHP4.0support布尔类型。
(5)进程生成:stayUNIX环境下的PHP4.0provide了一个很智能和通用的生成进程,使用了一种名为基于automake/libtool的系统生成技术。
(6)COM/DCOMsupport:PHP4.0provideCOM/DCOMsupport(仅用于Windows环境)sure无斓卮嫒『头问COM对象。
(7)与PHP3.0兼容性很好:PHP4.0是与PHP3.0代码向后兼容性接近100%。由于PHP4的改进的体系结梗两者有一些细微的差别,however大多数人takeprobablyforever不probably遇上this种情况。
(8)配置:PHP4重新设计和增强了PHP.ini文件,this使得用PHP.ini来配置PHP显得极为easily,this个文件surestay运行时被Apache(unix系统)或由Windows注册(Windows环境)。
(9)加密support:PHP4实现送暾的加密,this些加密功能是一个完整的mycrypt库,alsoPHP4.0support哈希函数。Blowfish,TripleDES,MD5,alsoSHA1So is it可使用的一些加密算法。
(10)类型检查:PHP4.0support同一操作符用于评类型检查:===(3等号运算符,恒等计算符),为stay两个值和其类型之间作检查。例如,'3'===3take视为假(类型是不同的),而3==3(相等判断,不比较类型)take视为真。
(11)FTPsupport:PHP4.0supportFTP。通常,你会为通过一个调制解调器连接download一个大文件provide一个接口。然而,if你确实有需要,sure使用PHP。
(12)PHP4新增函数或功能增强函数:PHP4.0新增了许多函数,同时也take许多现有的函数功能进行了增强,以下是一些例子。array_count_values()eval()foreach()include()ob_end_clean()ob_end_flush()ob_get_contents()ob_start()strip_tags()unset()。
(13)here打印:PHP4.0的Here打印是与Perl类似的,尽管完全不相同。Here是打印大容量文章的一个有用的方法,例如stayHTML文件中,不会漏掉任我桓鲎址,例如柯急昙恰
(14)HTTPSessionfallback系统何HTTPSession管理的一个fallback系蚭atPHP4.0被实现。缺省情况下,Session标识符由cookies存储。if没有cookiessupport或一项cookies任务失败,Session标识符自动被创建并stayURL的查询字符串中被携带。
(15)ISAPIsupport:PHP4.0能作为一个个性化的ISAPI模块作为IIS插件。this比PHP3.0更有效,它作为一个外康某绦蚶丛诵小
(16)内存:PHP4.0能更有效的使用内存,导致较少的内存占孟耗,thismain归功于引用计数技术的实现。⒄其他类成员函数:stayPHP4.0你能stay成员函数本身的effect域或全局范围内调用其他类的成员函数。例如,你能用一个子函数覆盖父函数,并stay子函数中调用父函数。
(17)多维数组:stayPHP4.0,利用GET,POST,Cookies的进行的数据传输support多维数组。
(18)个性化的HTTPSessionsupport:HTTPSession处理,包括fallback系统管理,stayPHP4.0被它男驴夂数实现。stay版本3.0中处理Session要求使用PHPLIB和第三方的库函数,它比把Session直接地由PHPsupport慢了许多。
(19)个性化的Javasupport:PHP4.0support和java的交互。this指鲂曰的Javasupport为PHPstayJava对象上创建和使用方法provide一个简单also有效的工具。
(20)对象和数嵌套组:PHP4.0实现了功能More强大的对象,移去了PHP3.0存stay的种种句法限制。对象能stay数组以内被嵌套also反过来也如此,sure根据你男枰实现嵌套。
(21)面向对象的编程:PHP4.0为面向对象的编程和构造类及对象provide扩展的功能和新特征。PHP4实现了对象重载,引用技术等新技术。
(22)对象重载support:对象重载语法市第三方的基于面向对象的类库使用PHP4的面向对象的特征存取they自身的功能。使用this个特征的一个COM模块已经被实现了。
(23)输出缓冲support:PHPprovide了一个输出缓冲函数集合。输出缓冲support市砟阈窗裹函数功能压缩缓冲区。stayPHP4的输出缓冲support市HTML头信息存放,无论HTML的正文是否输出。头信息((header(),contenttype,andcookies)不采用缓冲。
(24)增加了PCRE库:PHP4.0包括一个Perl兼容的正则表达式(PCRE)库,和正常regex库黄鹩PHP绑定。split和replacePCRE功能被support。PCRE和Perl正规表达式之间有一些细微差别。
(25)PHP.ini文件:PHP.ini文件stayPHP4.0被重新设计,使用的PHP的配置PHP.ini是更easilyalso更有效的。全部文件能被Apachestay运行time操作(stayApache环境下)或由Windows注册表(stayWindows下面)。被加入PHP.ini文件的配置指令自动地stayAllrelevant的模块中被support。
(26)引用计数:PHP4.0为系统中的每个数值provide了引用计数,包括资源。一旦一个资源不再被任何变量引用,它自动地被释放以节省内存资源。利用this个特征的最明显的例子一个内置SQL查询难环语句。stayPHP3.0中,看蔚莨閕n addition的SQL结果集合重复申请内存,直到脚本执行完毕,this些结果集合占用的内存才被释放。
(27)support引用:通过引用sure改变一个变量的值。
(28)函数的运行时绑定:PHP4.0的运行time绑定功能市砟鉺taythey被声明以前调用,无论声明是否stay代码以后或是stay运行time。
(29)类的运行时信息:PHP4.0supportstay运行时刻存取下列类信息:一个对象的类名,一个对象的父类的类名郑以及对象函数所stay的名字。
(30)service器抽象层何猻upportWebservice器provide了增强型SAPI(service器API)接口,是PHP4.0不可分的一部分。this个service器抽象层,provide送ㄓ玫腤EBservice器接口support,support多线程WEBservice器,为大多数的WEBservice器provide透明的support,this些service器包括Apache,IIS(ISAPI),以及AOLservice器。
(31)语法的点亮display:PHP4.0语法的点亮display市砜发者看见源代码而不是脚本,this个功能比PHP3.0中的更有效。它跑得更fast,更执行得更好,also产生更紧凑的HTML代码。
(32)由引用改变变量的值:PHP4.0由引用support可变的赋值,“关联”的2个变量之中个的任我桓龅闹被改变,in addition的变量的值同样被改变,this类似与C中的指针类型。
(33)stay引用字符串中的变量引用:PHP4.0增强了stay引用字符串中的变量引用。
PHP5/PHP[超文本预处理器]
PHP5stay长time的开发及多个预release版本后,2004年7月13日,PHP5.0release。该版本以Zend引擎Ⅱ为引擎,also加入了新功能如PHPDataObjects(PDO)。PHP5.0版本强化more的功能。紫龋完全实现面向对象,provide名为PHP兼容模式的功能。其问荴ML功能,PHP5.0版本support可直观地访问XML数据、名为SimpleXML的XML处理用界面。同被强化了XMLWebservicesupport,and标准supportSOAP扩展模块。数据库方面,PHP新版本provide旨stay访问MySQL男陆缑妗—MySQL。除此前的界面外,还sure使用面向对象界面和预处理语句(PreparedStatement)等MySQL男鹿δ埽甶n addition,PHP5.0上还捆绑有小容量RDBMS-SQLite.
新对象模式
*构造函数和析构函数*对象的引用*对象的克隆*对象中的私有、公共及受保护模式*接口(Interfaces)
*抽象类*__call*__set和__get*静态成员
构造函数和析构函数
stayPHP4中,当函数与对象同名时,this个函数take成为该对象的构造函数,alsostayPHP4中没有析构函数的概念。
stayPHP5中,构造函数被统一命名为__construct,also引入宋龉购数的概睿被统一命名为__destruct。
对象的引用
stayPHP4中,传递变量给一个函数或方法,实际是把this个变量做了一次复制,也就意味着你传给函数或方法的是this个变量的一个副本,除非你使用了引用符号“&;”来声明是要做一个引用,而不是一个Copy。stayPHP5中,对象总是以引用男问酱鎠tay的,对象中的赋值操作同样也都是一个引用操作。
对象的克隆
当一个对象始终以引用男问嚼被调用时,if我想得到该对象的一个副本,该Yes? 办呢?PHP5provide了一个新的功能,就是对象的克隆,语法为__clone。
抽象类
抽象类不能被实例化。
抽象类与其它类一样,市矶ㄒ灞量及方法。
抽象类同样sure定义一个抽象的方法,抽象类的方法不会被执行,howevertake有probably会stay其派生类中执行。
__call
PHP5的对象新增了一个专用方法__call(),this个方法用来监视一个对象中的其它方法。if你试着调用一个对象中不存stay的方法,__call方法take会被自动调用。
__set和__get
this是一个很棒的方法,__set和__get方法sure用来捕获一个对象中不存stay的变量和方法。
类型指示
stayPHP5中,你surestay对象的方法中指明其问必须为另一个对象的实例。
静态成员
静态成员和静态方法stay面象对象编程的术语中被称作“类方法(classmethods)”和“类变量(classvariables)”。
“类方法”stay一个对象没有实例化前市被调用。同样,“类变量”stay一个对象没有实例化前sure被独立操作控制(不需要用一个对象的方法来控制)。
异常处理
异常处理是公认的处理程序错误的理想方法,stayJava及C中都有this个概睿琖e欣喜的看到,stayPHP5已经加入了this方面的应用。你sure尝试使用“try”和“catch”来控制程序的错误。当有错误发生的时候,代码会把错误交给“catch”子句来处理,stay“catch”子句中,你需要指明要把错误交给某个对象处理,this样做sure使代码结构看起来更清晰,becauseWesure把All的错误信息交给一个对象来处理。
自定义错误处理
你sure很奖愕挠米远ㄒ宓拇理错误的代码来控制你的程序中的accident。你仅仅需要从异常类中派生出一个own的错误控制类,stay你own的错误控制类中,你需要有一个构造函数和一个getMessage方法。
命名空间
名称空间岳嗟姆肿榛蚝数分组很有用。它sure把一些relevant的类或函数给组合到黄穑奖阋院蟮饔谩
注意你需要stay何种情况下使用名称空间,stay实际运用中,你probably会需要声明两个或多个名称一样的对象来做不同的事情,那么你就sure把they分别放到不同的名称空间中去(但接口是要相同的)。
加密
从PHP5.3startsupportZendGuard加密方式,必须安装ZendGuardLoader,老的zendoptimizertake不被support。
Linux安装ZendGuardLoadersupport的过程:
操作系统为CentOS5.5,PHP版本为5.3.8(CentOS5.5中的PHP默认版本较低,if要upgrade到PHP*版,sure使用remi的report源进行upgrade)。
Windows下面的ZendGuardLoader不supportphp5.3.8VC9x86ThreadSafe而,php5.3.8VC9x86NonThreadSafe又不supportapache。所以安装的话,就需要安装stayiis或者和nginx搭配。
1、download*Linux操作系统系下的ZendGuardLoader。
2、上传至Linuxservice器并解压缩,注意阅读生成柯枷碌腞EADME文件。全文如下(添加必要的注释)。stay/etc/php.d/柯枷麓唇ㄎ募zend.ini,谌萑缦拢
1zend_extension=/usr/lib64/php/modules/ZendGuardLoader.so注意路径一定要写上,刚start没写路径,老是加载不上ZendGuardLoader.so,也sure直接take上面的配置写入/etc/php.ini文件中,effect一样。
3、重启httpdservice:servicehttpdrestart。
4.输出<?phpphpinfo();?>
PHP5.5正式版release不再supportWindowsXP
同时PHP开发者也提醒user,PHP5.5也包含一些不向后兼容的谌荩包括:不再supportWindowsXP和2003系统;不区分大小写的匹配函数、类;常数名称跟Locale无关,this对一些使用非ASCII代码的常量名的开发者需要注意的。
PHP6设想/PHP[超文本预处理器]
1、supportUnicode。Unicode是有其必然,虽然Unicode占用较多的空间,但Unicode带来的便利性,冻过占用空间的缺点,尤其stay国际化的今天,硬件设备越来越强大,网速也大幅度的提升,this么一点小小的缺点是sure忽略的。in addition一点,PHP也surestay.ini文件中设定能不能开启supportUnicode,决定权stay你own,this是一个不错的点子,关掉Unicode的support,PHP男阅懿⒉换嵊写蠓度的提升,main的影响stay于需要引用字符串的函数。
2、RegisterGlobalstake被移除this是一个main的决定,老的PHP使用者会觉得RegisterGlobals满奖愕模琱owever却忽粤薘egisterGlobals会带来程序上security性的隐患,大多数的主机上此项功能是关闭的,印象中从PHP4.3.x版start,此项默认配置值即是关闭状态,PHP6正式移除RegisterGlobals也代表着if程序是PHP3时代的产物,take完全不能运用,除了男从猛就猓别无他法。
3、MagicQuotestakecancelMagicQuotesmain是自动转义须要转义的字符,此项功能移除也符合大多数PHP开发者男纳。
4、SafeModecancel。老实说,this个模式不know 哪里不好,cancel緇eg∠吧,反正也用不到。
5、‘var’别名为‘public’,stay类中的var声明变成public的别名,believe是为了兼容PHP5而作的决定,PHP6Now也sure称作为OO语粤恕
6、通过引用返回take出错未来通过引用返回编译器take会报错例如$a=&newb()、function&c(),OO语言默认就是引用,所以不须要再运用&了。
7、zend.ze1compatbilitymodetake被移去(Zend.ze1相容模式take被移去),PHP5是为兼容旧有PHP4,所以stay.ini中可choice是否开启相容模式,原由stay于PHP5运用的是第二代分析引擎,however相容模式并不是百分之百能分析PHP4语法,所以旧时代的产物,移除。
8、Freetype1andGD1supporttake不见this两个Libs存stay了很久,php6take不再support,况且GD1早已被Now的GD2取代了。
9、dl()被移到SAPI中dl()main是让设计师加载extensionLibs,被移到SAPI中。
10、RegisterLongArray去除从PHP5起默认是关闭,stayPHP6中正式移除。
11、一些Extension的变更例如XMLReader和XMLWritertake不再是以Extension的方式出郑瑃heytake被移入到PHP的核心之中,also默认强启,eregextensiontake被放入PECL,代表着它take被移出PHP核心,thisSo is it为了让路给新的正则表达式extension,此外,Fileinfoextension也take被导入PHP的核心之中。
12、APCtake被导入核心this是一个提高PHP性能的功能,它take被放入PHP核心中,alsosurechoice是否启用APC。
13、告别ASPstyle的起始标签original 是为了取悦ASP开发者转向运用PHP,现今已经不再须要this种做法了。
较后,别期望PHP6男阅躶ure彻底超过PHP5,有probablyPHP6的执行效率会比PHP5还要来得慢,howeversure预期的是,PHP开发小组take会努力的完善PHP6,超越PHP5。
环境配置/PHP[超文本预处理器]
Windows下
Software需求(*版)
WindowsVista或更高版本;
Apache2+或IIS6+或Nginx
安装过程
takePHP4.0.5解压到C:\Web\php\柯枷隆
takeMySQL3.23.38安装到C:\Web\mysql\柯枷隆
takeC:\web\php\php4ts.dll文件奖吹紺:\WINNT\system32\柯枷隆
takeC:\web\php\php.exel文件奖吹紺:\WINNT\柯枷隆
takeC:\web\php\php.ini-dist文件奖吹紺:\WINNT\柯枷拢并takephp.ini-dist更名为php.ini。
运行C:\Web\apache\Apache\Apache.exe-i-n
运行C:\Web\mysql\bin\mysqld-nt.exe--install
编辑C:\WINNT\php.ini
找到“extension_dir=./”字段,take其改为extension_dir="C:\myphp\php\extensions"。
编辑C:\Web\apache\Apache\conf\httpd.conf
找到“#BindAddress*”字段,take其改为BindAddress127.0.0.1。(if主机有固定IP地址,此处改为主机IP地址。如BindAddress211.101.152.106),找到“ServerName”字段,take其改为ServerNamelocalhost。(如主机有固定主机名,此处改为主机的主机名。如ServerNamebn001)。
找到“ScriptAlias/cgi-bin/"C:/Web/apache/Apache/cgi-bin/"”字段,stay其下面加入ScriptAlias/php/"C:/Web/php/"。找到“#AndforPHP4.x,use:”字段,stay其后面加入:AddTypeapplication/x-httpd-php;ActionApplication/x-httpd-php"c:/Web/php/php.exe"。
找到“#LoadModuleusertrack_modulemodules/mod_usertrackso”字段,LoadModulephp4_modulec:/web/php/sapi/php4apache.dll
UNIX下
所需Software
php-3.0.14-win32.zip;php-3.0.14-win32.zip;mysql-shareware-3.22.32-win.zip
AllSoftware均安装stay/export/home/guoj/下,也可stay其他柯肌
安装mysql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
gzip-dcmysql-3.22.30.tar.gz|tarxvf-
cdmysql-3.22.30
./configure-prefix=/export/home/guoj/mysql
make
makeinstall
scripts/mysql_install_db
cd../mysql/bin
bin/safe_mysqld&安装phpapache
gzip-dcapache_1.3.11.tar.gz|tarxvf-
gzip-dcphp-3.0.11.tar.gz|tarxvf-
cdapache_1.3.11
./configure-prefix=/export/home/guoj/www
cd../php-3.0.11
./configure-with-apache=/export/home/guoj/apache_1.3.11
-with-mysql=/export/home/guoj/mysql-enable-track-vars
make
makeinstall
cd../apache_1.3.11
./configure--prefix=/export/home/guoj/www
--activate-module=src/modules/php3/libphp3.aP
make
makeinstall
cd../php-3.0.11
cd../php3.ini-distphp3.ini
viphp3.ini修改php3.ini
doc_root=/export/home/guoj/www/htdocs/
extension_dir=/export/home/guoj/php-3.0.11/
extension=php3_mysql.dllcpphp3.ini/usr/local/lib/php3.inivi../www/conf/httpd.conf
由弦韵录妇洌
1
2
3
4
<Directory"/export/home/guoj/php-3.0.11/">
OptionsFollowSymLinks
AllowOverrideNone
</Directory>../www/bin/apachectlstart
其他方面/PHP[超文本预处理器]
PHP stay数据库方面的丰富support,So is it它迅速走斓膔eason 之一,它support下列的数据库或是数据文件:
Adabas 、D、 DBA、dBase 、dbm 、filePro 、Informix 、InterBase、mSQL 、Microsoft SQL Server、·MySQL、Solid、Sybase、 Oracle 、PostgreSQL
而stay Internet 上它也support了相当多的通讯agreement (protocol),包括了与电子邮件relevant的 IMAP,POP3;网管系统 SNMP;network新闻NNTP;帐号共用 NIS;全球信息网 HTTP 及 Apache service器;柯糰greement LDAP 以及其它network的relevant函数。
除此之外,用 PHP 写出来的 Web 后端 CGI 程序,sure很轻易的浦驳讲煌的操作系统上。例如,先以 Linux 架的网站,stay系统负荷过高时,surefast速地take整个系统移到 SUN 工作站上,不用重新编译 CGI 程序。面对fast速发展的 Internet,this是长期规划的*choice。
relevant语法及概念
语法(例子中均忽粤薖HP代码边界符 ):
注释的语法有三郑
基本的结构控制语句:
一个PHP实例:
php对面向对象的support
面向对象编程的概睿
不同的author之间说法probably不一样,however一个OOP语言必须有以下几方面:
1.抽象数据类型和信息封装
2.继承
3.多态
stayPHP中是通过类来完成封装的:
of course你sure按own的喜好进行定义,但*保持一种标准,this样会更有效。数据成员stay类中使用"var"声明来定义,stay给数据成员赋值之前,它们是没有类型的。一个数据成员sure是一个整数,一个数组,一个relevant数组(associative array)或者是一个对象。方法stay类中被定义成函数问剑瑂tay方法中访问类成员变量时,你应该使用$this->name,否则对一个方法此担它只能是局部变量。
使用new操作符来创建一个对象:
then你sure使用成员函数通过:
staythis个例子中,setX成员函数take5赋值给对象的成员变量x(不是类的),thengetX返回它的值5。sure象:$obj->x=6那样通过类引用方式来存取数据成员,this不是一个很好的OOP习惯。我强烈建议通过方法来存取成员变量。if你把成员变量看成是不可处理的,also只通过对象句柄来使用方法,你take是一个好的OOP程序员。不幸的是,PHP不support声明私有成员变量,所以不良代码stayPHP中So is it市淼摹<坛衧tayPHP中很easily实郑只要使用extends关键字。
"Another"类的对象拥有了父类(Something)的全部的数据成员及方法,and还由狭薿wn的数据成员和方法。
你sure使用
PHP只support单继承,所以你不能从两个或两个以上类派生出新的类来。你surestay派生类中重定义一个方法,ifWestay"Another"类中重定义了getX方法(方法重写),We就不能使 用"Something"中的getX方法了。if你stay派生类中声明了一个与基派同名的数据成员,那么当你处理它时, 它take“隐藏被类的数据成员。
你surestay你的类中定义构造函数。构造函数是一个与类名同名的方法,当你创建一个类的对象被被调用,例如:
所以你sure创建一个对象,通过:
构造函数会自动地把6赋值给数据变量x。构造函数和方法都是普通的PHP函数(”__“两个下划线,魔术方法),所以你sure使用缺省问。
接着:
缺省问使用C++的方式,所以你不能忽略Y的值,而给X一个缺省问,问是从左到右赋值的,if传入的问少于要求的问时,其作的take使用缺省问。
当一个派生类的对象被创建时,只有它的构造函数被调用,父类的构造函数没被调用,if你想调用基类的构造函数,你必须要stay派生类的构造函数中用parent::__construct()调用。surethis样做是stay派生类中All父类的方法都强捎玫摹
OOP的一个很好的机制是使用抽象类。抽象类是不能实例化,只能provide给派生类一个接口。设计者通常使用抽象类来强迫程序员从基类派生,this样sure确保新的类包含一些期待的功能。stayPHP中没有标准的方法,however:if你需要this个特性,sure通过定义基类,并stay它的构造函数后由"die" 的调用,this样就sure保证基类是不可实例化的,stay每一个方法(接口)后面由"die" 语句,所以,if一个程序员stay派生类中没有复盖方法,takeinitiation一个错误。andbecausePHP 是无类型的,你probably需要确认一个对象是来自于你的基类的派生类,那么stay基类中增加一个方法来实义类的身份(返回某种标识id),alsostay你接收到一个对象问时校验this个值。of course,if一个不好男岸癯绦蛟眘tay派生类中复盖了this个方法,this种方法就黄餰ffect了,howevercommonlyproblem多stay懒惰的程序员身上,而不是邪恶的程序员。
of course,能够让基类对程序员无法看到是很好的,只要take接口打印出来做they的工作就sure了。PHP 5 引入宋龉购数的概睿瑃his类似于其它面向对象的语言,如 C++。析构函数会stay到某个对象的All引用都被删除或者当对象被显式销毁时执行。
重载(与复盖不同)stayPHP中不support,becausePHP是弱类型语言。stayOOP中,你sure重载一个方法来实现两个或重多的方法have相同的名郑琱owever有不同数量或类型的问(this要看语言)。PHP 是一种松散类型的语言,所以通过类型重载黄餰ffect,然而通过问的个数不同来重载也黄餰ffect。
有时stayOOP中重载构造函数very好,this样你sure通过不同的方法创建对象(变量函数)。stayPHP中实现它的技巧是:
通过stay类中的额外的处理,使用this个类对user是透明的:
有时this个very好用。
多态
多态是对象的一种能力,它surestay运行时谈据传递的对象问,决定调用哪一个对象的方法。例如,if你有一个figure的类,它定义了一个draw的方法。also派生了circle和rectangle 类,stay派生类心愀锤橇薲raw方法,你probably还有一个函数,它hope使用一个问齲,alsosure调用$x->draw()。if你有多态性,调用哪个draw方法就依赖于你传递给this个函数的对象类型。
多态性stay象PHPthis样的解释语言(想象一下一个C++编译器生成this样的代码,你应该调用哪一个方法?你也不know 你拥有的对象是what类型的,好,this不是重点)是veryeasily和自然的。所以PHPof coursesupport多态性。
用PHP进行面向对象编程
一些"纯化论者(purists)"probably会说PHP不是一个真正的面向对象的语言,this是事实。PHP 是一个混合型语言,你sure使用OOP,也sure使用传车墓程化编程。然而,对于大型项目,你probably想/需要stayPHP 中使用康腛OP去声明类,andstay你的项目只用对象和类。
随着项目越来越大,使用OOPprobably会有帮助,OOP代码很easily维护,easily理解和重用。this些就是Software工程的基础。stay基于web的项目中应用this些概念就成为take来网站成功的关键。
高级OOP技术
stay看过基本的OOP概念后,我就sure向你展示更高级的技术:
序列化(Serializing)
PHP不support永久对象,stayOOP中永久对象是surestay多个应用的引用中保持状态和功能的对象,this意味着拥有take对象preservation到一个文件或数据库中的能力,andsurestay以后装入对象。this就是所谓男蛄谢机制。PHP 拥有序列化方法,它sure通过对象进行调用,序列化方法sure返回对象的字符串express。然而,序列化只preservation了对象的成员数据而不包括方法。
stayPHP4中,if你take对象序列化到字符串$s中,then释放对象,接欧葱蛄谢对象到$obj,你surecontinue使用对象的方法!我不建议this样去做,because(a)文档中没有保证this种行为stay以后的版本中仍然sure使用。(b) this个probably导致一种误解,stay你把一个序列化后的版本preservation到磁盘并退出脚本时。当以后运行this个脚本时,你不能期待着stay反序列化一个对象时,对象的方法也会stay那里,because字符串express根本就不包括方法。
总而言之,PHP 进行序列化对于preservation对象的成员变量very有用。(你也suretakerelevant数组和数组序列化到一个文件中)。
例子 :
你指戳顺稍笔据,however不包括方法(根据文档所说)。this导致了只能通过类似于使用$obj2->x来存取成员变量(你没有别的方法!)的*办法,所以不要stay家里试它。
有一些办法sure解决this个problem,我把它留着,because对this篇简洁的文章此担瑃hey太不好。我会很高兴地欢迎stayPHP的后续版本中有全序列化的特性。
使用类进行数据存储PHP和OOP一件very好的事情就是,你sure很easily地定义一个类来操作某件事情,also无论问蹦阆胗玫氖焙蚨約ure调孟嘤Φ睦唷<偕枘阌幸桓鯤TML表单,usersure通过choiceproductID号来choice一个product。stay数据库中有product男畔ⅲ你想把productdisplay出来,display它的Price等等。你拥有不同类型的product,also同一个actionprobably对不同的producthave不同的meaning。例如,display一个声音probably意味着播放它,however对于其它type的productprobably意味着display一个存stay数据库中的picture。你sure使用OOP或PHP来减少编码并提高质量:
定义一个product的类,定义它应该有的方法(例如:display),then定义对每一type型的product的类,从product类派后出来(SoundItem类,ViewableItem类,等等),复盖stayproduct类中的方法,使它们按你的想法action。
根据数据库中每一种product的类型(type)字段给类命名,一个典型的product表probably有(id,type,price,description,等等字段)...thenstay处理脚本中,你sure从数据库中取出type值,then实例化一个名为type的对象:
this是PHP的一个very好的特性,你sure不用考虑对象的类型,调用$obj的display方法或其它的方法。使用this个技术,你不需要修改脚本去增加一个新类型的对象,只是增加一个处理它的类。
this个功能很强大,只要定义方法,而不去考虑All对象的类型,stay不同的类中按不同的方法实现它们,thenstay主脚本中对我舛韵笫褂盟们,没有if...else,也不需要两个程序员,只有高兴。
你同意编程是easily的,维护是便宜的,可重用是真的吗?
if你管理一组程序员,分配工作就是很简单的了,每personalprobablybe responsible for一个类型的对象和处理它的类。
sure通过this个技术实现国际化,根据user所选的语言字段应孟嘤Φ睦嗑蛃ure了,等等。
奖春涂寺
当你创建一个$obj的对象时,你sure通过$obj2=$obj来奖炊韵螅新的对象是$obj的一个奖矗ú皇且桓鲆用),所以它have$objstay当时的状态。有时候,你不想this样,你只是想生成一个象obj类一样的一个新的对象,sure通过使用new语句来调用类的构造函数。stayPHP中也sure通过序列化,和一个基类来实郑但All的其它类家从基类派生出来。
进入危险region
当你序列化一个对象,你会得到某指袷降淖址串,if你感兴趣,你sure调究它,among,字符串中有类的名郑ㄌ好了!),你sure把它取出来,象:
所以假设你创建了一个"Universe"的类,also强制All的类都必须从universe扩梗你surestayuniverse 中定义一个clone的方法,如下:
你所得到的是一个新的Something类的对象,它同使用new方法,调用构造函数创建出的对象一样。我不know this个对你是否有用,howeverUniverse类sureknow 派生类的名字是一个好的经验。想象是*限制。
模板引擎
Smarty:Smarty的特点是take模板编译成PHP脚本,then执行this些脚本。很fast,very奖恪
Heyes Template Class:一个veryeasily使用,但功能强大alsofast速的模板引擎,它帮助你把page面布局和设计从代码中分离。
FastTemplate:一个简单的变量插值模板类,它分析你的模板,把变量的值从HTML代码中分离处理。
ShellPage:一个简单易用的类,sure让你的整个网站布局基于模板文件,修改模板就能改变整个站点。
STP Simple Template Parser:一个简单、轻量级also易于使用的模板分析类。它sure从多个模板中组装一个page面,把结果page面输出到浏览器或者文件系统。
OO Template Class:一个你sure用stayown程序中的面向对象的模板类。
SimpleTemplate:一个sure创建和结构化网站的模板引擎。它sure解析捅嘁肽0濉
bTemplate:短小howeverfast速的模板类,市砟惆裀HP逻辑代码从HTML修饰代码中分离。
Savant:一个强大且轻量级的PEAR兼容模板系统。它是非编译型的,使用PHP语言本身做为它的模板语言。
ETS - easy template system:sure使用完全相同数据重组模板的模板系统。
EasyTemplatePHP:适用于你的站点的一个简单however强大的模板系统。
vlibTemplate:一个fast速、全能的模板系统,它包含一个缓存和调岳唷
AvanTemplate:多字节security的模板引擎,占用很少系统资源。它support变量替换,谌菘閟ure设置display或隐藏
Grafx Software’s Fast Template:一个修改版本的Fast Template系统,它包括缓存功能,调试控制台以及沉默去除为赋值块。
TemplatePower:一个fast速、简单、功能强大的模板类。main功能有嵌套的动态块support,块/文件包含support以及display/隐藏未赋值的变量。
TagTemplate:this个库的功能被设计来使用模板文件,同时市砟愦親TML文件检索信息。
htmltmpl: templating engine:一个适用于Python和PHP的模板引擎。它面向hopestay项目中分离代码和设计的web应用开发人员。
PHP Class for Parsing Dreamweaver templates:一个分析Dreamweaver模板的简单类,被用于Gallery 2 和WordPress的自定义模块中。
MiniTemplator (Template Engine):in the light ofHTML文件的一个紧凑型模板引擎。对于模板变量和块定义它have简单的语法。among块sure嵌套。
Layout Solution:简化网站开发和维护。它拥有常用的变量和page面元素使你不需要重复做page面布局工作。
Cached Fast Template:它已经纳入 FastTemplate ,市砟慊捍婺0逦募,even to the extent thatsurestay分离的块谌萆匣捍娌煌的规格。
TinyButStrong:一个supportMySQL,Odbc,Sql-Server和ADODB的模板引擎。它包含7个方法和两个属性。
Brian Lozier’s php based template engine:只有2K大小,veryfastalso是面向对象设计。
WACT:一个由杓浦蟹掷氪码的模板引擎。
PHPTAL:一个PHP下面的XML/XHTML模板库。
Rong_View_Wudimei:Wudimei开发的国产框架Rong Framework的模板引擎,它类似于smarty,优点是speedfast,缺点是模板标签较少,however够用了。
框架introducethinkphp
ThinkPHP是一个免费开源的,fast速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源agreementrelease,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生岳碼lways秉承简洁实用的设计原则,stay保持出色男阅芎椭良虻拇码的同时,也注重易用性。also拥有众多的原创功能和特性,stay社区team的积极参与下,stay易用性、扩展性和性能方面不断优化和改进,已经沙の国内最领先和*影响力的WEB应用开发框架,众多的典型案例确保sure稳定用于商业以及门户级的开发。
PHP认证级别
PHP课程由初级(IFE)、中级(IPE)和高级(IAE)三个部分。
IFE即Index Front-end Engineer的缩写,指数前端工程师的meaning。
IPE即 Index PHP Engineer 的缩写,meaning是指数PHP工程师。
IAE即 Index architecture/advanced engineer 的缩写,meaning是:指数高级/架构工程师。
PHPsecurity
PHPactuallyhowever是Webservice器的一个模块功能,所以紫纫保证Webservice器的security。of courseWebservice器要security又必须是先保证系统security,this样就扯远了,无穷无尽。常见的websecurity漏洞有:注入攻击,跨站攻击,service器自身漏洞等,对应的详细解释,详见:扩展阅读中的《WEBsecurity性-2010_OWASP_TOP10》,this里有很详尽的解释。
PHP的优点学习过程和方法
PHP的语法类似于C,Perl,ASP或者JSP。对于those 对上述之一的语言较熟悉的死此担琍HP太简单了。相反的,if你对PHP了解较多,那么你对于其他几种语言难习都很简单了。你只需要很短的time内takePHP的核心语言特点全部掌握,你probably已经very了解HTML,even to the extent that你已经know 怎样用编辑设计Software或者手工来制作好看的WEB站点。由于PHP代码能够无障碍的添加进你的站点,stay闵杓坪维护站点的同时,你sure很轻松的加入PHP使得你的站点Morehave动态特性。
数据库连接
PHPsure编译成have与许多数据库相连接的函数。PHP与MySQL是绝佳的组合,if再由螦pacheservice器,就是相当完美的了。你还sureown编写外围的函数取间接存取数据库。通过this样的途径当你更换使用的数据库时,sure轻松的更改编码以适应this样的变化。PHPLIB就是最常用的sureprovidecommonly事务需要的一系列基库。
可扩展性
就像前面说的那样,PHP已经进入了一个高速发展的时期。对于一个非程序员此滴狿HP扩展附加功能probably会比较难,however对于一个PHP程序员此挡⒉籨ifficulty。
PHP可伸缩性
传统上网page的交互effect是通过CGI来实现的。CGI程序的伸缩性不很理想,because它为每一个正stay运行的CGI程序开一个独立进程。解决方法就是take经常用来编写CGI程序的语
言的解释器编译进你的webservice器(比如mod_perl,JSP)。PHP就sure以this种方式安装,虽然很少有人愿意this样以CGI方式安装它。内嵌的PHPsurehave更高的可伸缩性。
PHP免费安装
PHP源代码包安装版:this个版本适合已经有own独立的网站域名、网站空间的专业网站建设user。使用方法依黄湮简单,只需三步:
*、到official网站:download PHP源代码包安装版*版本,解压download文件,takeamong的全部谌萆洗到你的supportPHP的网站空间
第二、改更文件属性,请take根柯枷乱訮HP为后缀名的文件和”/include/domain.php”和 “/attachments” 和 “/data”文件夹以及文件夹下All的文件属性改成“可读”、“可写”、“可执行”,通常是“755”。
第三、打开你的网站根柯迹系统会自动运行setup安装程序,按提示点下一步操作即可。
友情提示:当你downloadWe的Software并看到this份说明时,则说明你一定是对企业网站建设有一定男求或者你是一个网站建设技术学习者。
文件格式
对于只含有 php 代码的文件,Wetakestay文件结尾处忽略掉 "?>"。this是为了防止多余的空格或者其它字符影斓酱码。
例如:
$foo = 'foo';
缩进应该能够反映出代码的逻辑结果,尽量使用四个空格,prohibit使用制表符TAB,becausethis样能够保证有跨客户端编程器Software的灵活性。
例如:
变量赋值建议保持相等间距和排列。
例如:
每行代码长度应控制stay80个字符以内,最长不超过120个字符。because linux 读入文件commonly以80列为单位,就是说if一行代码超过80个字符,那么系统take为此冻龆钔獠僮指令。this个虽然看起来是小problem,however对于追求完美的程序员此礢o is it值得注意并遵守的规范。
每行结尾不市碛卸嘤嗟目崭瘛
Php文件记事本编辑乱码problem
commonly情况下,记事本编辑器stay对文件进行完编辑并preservation之时,其默认编码为ANSI,chinese。然则more的时候,phpstay语言环境设置时语言多数为utf-8,直接preservation并用于apache等http-server解析后就会出现乱码。
为此,应该注意stay用记事本编辑完后可take文件用“另存为”的方式对文件进行preservation,并take“文件类型”choice“All文件”,编码与文件指定语言编码一致即可。
算数运算符
PHP 的运算符包括算术运算符、赋值运算符、比较运算符和逻辑运算符。
算数运算符:
加,减,乘,除,取模(取余)
+、-、*、/、%
赋值运算符:(以下解释stay许多书中有所不同)
赋值,加赋值,减赋值、乘赋值、除赋值,连指持
=、+=、-=、*=、/=、.=
位运算符:
位与、位或、位亦或、位非、左移、右移
&、|、^、~、<<、>>
比较运算符:
等于、全等于、不等于、不全等于、大于、小于、大于等于、小于等于
==、===、!=(<>)、!==、>、<、>=、<=
逻辑运算符:
逻辑与、逻辑或、逻辑非、逻辑亦或
&&、||、!、xor
字符串运算符:
. 连接两个字符串
常用函数/PHP[超文本预处理器]
$_SERVER
$_SERVER是PHP语言中获取service器relevant资料的函数,displayrelevant函数代码。
specific 函数:
$_SERVER['PHP_SELF'] #当前正stay执行脚本的文件名,与 document rootrelevant。
$_SERVER['argv'] #传递给该脚本的问。
$_SERVER['argc'] #包含传递给程序的命令行问的个数(if运行stay命令心J剑。
$_SERVER['GATEWAY_INTERFACE'] #service器使用的 CGI 规范的版本。例如,“CGI/1.1”。
$_SERVER['SERVER_NAME'] #当前运行脚本所stayservice器主机的名称。
$_SERVER['SERVER_SOFTWARE'] #service器标识的字串,stay响应请求时的头部中给出。
$_SERVER['SERVER_PROTOCOL'] #请求page面时通信agreement的名称和版本。例如,“HTTP/1.0”。
$_SERVER['REQUEST_METHOD'] #访问page面时的请求方法。例如:“GET”、“HEAD”,“POST”,“PUT”。
$_SERVER['QUERY_STRING'] #查询(query)的字符串。
$_SERVER['DOCUMENT_ROOT'] #当前运行脚本所stay的文档根柯肌stayservice器配置文件中定义。
$_SERVER['HTTP_ACCEPT'] #当前请求的 Accept: 头康哪谌荨
$_SERVER['HTTP_ACCEPT_CHARSET'] #当前请求的 Accept-Charset: 头康哪谌荨@如:“iso-8859-1,*,utf-8”。
$_SERVER['HTTP_ACCEPT_Encoding'] #当前请求的 Accept-Encoding: 头康哪谌荨@如:“gzip”。
$_SERVER['HTTP_ACCEPT_LANGUAGE']#当前请求的 Accept-Language: 头康哪谌荨@如:“en”。
$_SERVER['HTTP_CONNECTION'] #当前请求的 Connection: 头康哪谌荨@如:“Keep-Alive”。
$_SERVER['HTTP_HOST'] #当前请求的 Host: 头康哪谌荨
$_SERVER['HTTP_REFERER'] #链接到当前page面的前一page面的 URL 地址。
$_SERVER['HTTP_USER_AGENT'] #当前请求的 User_Agent: 头康哪谌荨
$_SERVER['REMOTE_ADDR'] #正stay浏览当前page面user的 IP 地址。
$_SERVER['REMOTE_HOST'] #正stay浏览当前page面user的主机名。
$_SERVER['REMOTE_PORT'] #user连接到service器时所使用的端口。
$_SERVER['SCRIPT_FILENAME'] #当前执行脚本的*路径名。
$_SERVER['SERVER_ADMIN'] #管理员信息
$_SERVER['SERVER_PORT'] #service器所使用的端口
$_SERVER['SERVER_SIGNATURE'] #包含service器版本和虚拟主机名的字符串。
$_SERVER['PATH_TRANSLATED'] #当前脚本所stay文件系统(不是文档根柯迹┑基本路径。
$_SERVER['SCRIPT_NAME'] #包含当前脚本的路径。thisstaypage面需要指向own时very有用。
$_SERVER['REQUEST_URI'] #访问此page面所需的 URI。例如,“/index.html”。
$_SERVER['PHP_AUTH_USER'] #当 PHP 运行stay Apache 模块方式下,also正stay使用 HTTP 认证功能,this个变量便是user输入的user名。
$_SERVER['PHP_AUTH_PW'] #当 PHP 运行stay Apache 模块方式下,also正stay使用 HTTP 认证功能,this个变量便是user输入的密码。
$_SERVER['AUTH_TYPE'] #当 PHP 运行stay Apache 模块方式下,also正stay使用 HTTP 认证功能,this个变量便是认证的类型。
$_SERVER['PATH_INFO'] #Contains any client-provided pathname information trailing the actual script filename but preceding the query string, if available. For instance, if the current script was accessed via the URL example/php/path_info.php/some/stuff?foo=bar, then$_SERVER['PATH_INFO'] would contain /some/stuff.
$_SERVER['ORIG_PATH_INFO'] #Original version of 'PATH_INFO' before processed by PHP.
relevant技巧:
1.获取脚本网page地址二级路径:
案例如下,脚本网址路径“so/so/index.php”,需要“so/so/”this个地址,而地址是根据不同博客地址而变化的。among“so”可用“$_SERVER['HTTP_HOST']”生成,但network上却没有relevant函数。
查伊藀hp,find 一位net friend有如下的生成思路:先用“$_SERVER['PHP_SELF']”生成脚本路径:“/so/index.php”,再用“$scriptname=end(explode('/',$_SERVER['PHP_SELF']));”截取脚本文件名:“index.php”,再用替换函数“$scriptpath=str_replace($scriptname,'',$_SERVER['PHP_SELF']);被袢《级路径:“/so/”。
then使用display二级路径,this样就解决了缺失函数problem。