PHP (超文本预处理器)

1.PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸取了C语言、Java和Perl的特色,利于学习,使用普遍,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它能够比CGI或者Perl更快速地执行动态网页。用PHP作出的动态页面与其余的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比彻底生成HTML标记的CGI要高许多;PHP还能够执行编译后代码,编译能够达到加密和优化代码运行,使代码运行更快。php

       中文名 超文本预处理器 外文名 PHP: Hypertext Preprocessor 编程范型 面向对象、命令式编程 设计者 Rasmus Lerdorf 维    护 The PHP Group 最新版本 PHP 5.6.0(28 Aug 2014) html

                       (10)类型检查:PHP 4.0 支持同一操做符用于评类型检查:===(3 等号运算符,恒等计算符),为在两个值和其类型之间做检查。例如,'3' ===3 将视为假 ( 类型是不一样的),而 3 ==3 ( 相等判断,不比较类型 ) 将视为真。前端

           环境配置编辑Windows下软件需求(最新版)Windows Vista 或更高版本;Apache 2+ 或 IIS 6+ 或 Nginx安装过程将 Apache 1.3.19 安装到 C:\Web\apache\ 目录下。mysql

将 PHP 4.0.5 解压到 C:\Web\php\ 目录下。将 MySQL 3.23.38 安装到 C:\Web\mysql\ 目录下。linux

将 C:\web\php\php4ts.dll 文件拷贝到 C:\WINNT\system32\ 目录下。程序员

将 C:\web\php\php.exel 文件拷贝到 C:\WINNT\ 目录下。web

将 C:\web\php\php.ini-dist 文件拷贝到 C:\WINNT\ 目录下,并将php.ini-dist 改名为 php.ini。sql

运行 C:\Web\apache\Apache\Apache.exe-i –n运行 C:\Web\mysql\bin\mysqld-nt.exe--install编辑 C:\WINNT\php.ini找到 “extension_dir = ./ ” 字段,将其改成 extension_dir = "C:\myphp\php\extensions"。编辑 C:\Web\apache\Apache\conf\httpd.conf找到“ #BindAddress*” 字段将其改成 BindAddress127.0.0.1。(若是主机有固定IP地址,此处改成主机IP地址。如 BindAddress 211.101.152.106),找到 “ServerName” 字段,将其改成 ServerName localhost。(如主机有固定主机名,此处改成主机的主机名。如ServerName bn001)。thinkphp

找到“ ScriptAlias /cgi-bin/ "C:/Web/apache/Apache/cgi-bin/" ” 字段,在其下面加入 ScriptAlias /php/ "C:/Web/php/"。找到 “# And for PHP 4.x,use: ” 字段,在其后面加入:12AddTypeapplication/x-httpd-phpActionApplication/x-httpd-php"c:/Web/php/php.exe"找到“ #LoadModule usertrack_module modules/mod_usertrack so” 字段,LoadModule php4_module c:/web/php/sapi/php4apache.dllUNIX下所需软件php-3.0.14-win32.zip;php-3.0.14-win32.zip;mysql-shareware-3.22.32-win.zip全部软件均安装在/export/home/guoj/下,也可在其余目录。数据库

安装mysql12345678910111213141516171819202122232425262728gzip-dcmysql-        3.22.30.tar.gz|tarxvf-cdmysql-3.22.30./configure-prefix=/export/home/guoj/mysqlmakemakeinstallscripts/mysql_install_dbcd../mysql/binbin/safe_mysqld&安装phpapachegzip-dcapache_1.3.11.tar.gz|tarxvf-gzip-dcphp-3.0.11.tar.gz|tarxvf-cdapache_1.3.11./configure-prefix=/export/home/guoj/wwwcd../php-3.0.11./configure-with-apache=/export/home/guoj/apache_1.3.11-with-mysql=/export/home/guoj/mysql-enable-track-varsmakemakeinstallcd../apache_1.3.11./configure--prefix=/export/home/guoj/www--activate-module=src/modules/php3/libphp3.aPmakemakeinstallcd../php-3.0.11cd../php3.ini-distphp3.iniviphp3.ini修改php3.inidoc_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加上如下几句:1234OptionsFollowSymLinks

AllowOverrideNone

../www/bin/apachectlstart

其余方面编辑

PHP 在数据库方面的丰富支持,也是它迅速走红的缘由之一,它支持下列的数据库或是数据文件:

Adabas 、D、 DBA、dBase 、dbm 、filePro 、Informix 、InterBase、mSQL 、Microsoft SQL Server、·MySQL、Solid、Sybase、 Oracle 、PostgreSQL

而在 Internet 上它也支持了至关多的通信协议 (protocol),包括了与电子邮件相关的 IMAP,POP3;网管系统 SNMP;网络新闻NNTP;账号共用 NIS;全球信息网 HTTP 及 Apache 服务器;目录协议 LDAP 以及其它网络的相关函数。

除此以外,用 PHP 写出来的 Web 后端 CGI 程序,能够很轻易的移植到不一样的操做系统上。例如,先以 Linux 架的网站,在系统负荷太高时,能够快速地将整个系统移到 SUN 工做站上,不用从新编译 CGI 程序。面对快速发展的 Internet,这是长期规划的最好选择。

相关语法及概念

php 支持八种原始类型。

四种标量类型:boolean(布尔型) integer(整型) float(浮点型,也做“double”) string(字符串)

两种复合类型:array(数组)object(对象)

最后是两种特殊类型:resource(资源)NULL

为了确保代码的易读性,本手册还介绍了一些伪类型:mixed、number、callback

语法(例子中均忽略了PHP代码边界符 ):

注释的语法有三种:

//comment这个是单行注释

/*comment*/这个是多行注释

#comment这个是脚本类型注释,不多用

基本的结构控制语句:

//分支结构(选择结构)

if(condition){

//Statement

}

if(condition){

//Statement

}else{

//Statement

}

if(condition){

//Statement

}elseif(condition){

//Statement

}

//多分支结构

switch($变量){

case'值':

//Statement

break;

case'值2':

//Statement

break;

default:

//Statement

}

//循环结构

while(condition){

//Statement

}

do{

//Statement

}while(condition);

for(初始化;判断;变化){

//Statement

}

//数组遍历专用循环语句

foreach($Arrayas$value){

echo$value;

}

foreach($Arrayas$key=>$value){

echo$key;

echo$value;

}

一个PHP实例:

12//php中string类型的拼接符和其它大多数采用"+"号运算符不同,而是采用"."号运算

//在通常语言中用于对象属性和方法调用的"."运算符,则和C语言的结构体同样用"=>"

php对面向对象的支持

面向对象编程的概念:

不一样的做者之间说法可能不同,可是一个OOP语言必须有如下几方面:

1.抽象数据类型和信息封装

2.继承

3.多态

在PHP中是经过类来完成封装的:

//在OOP类中,一般采用大双驼峰命名法,每一个单词的首字母都大写

classSomething{

//做用域修饰符:public公共的;private私有的;protected受保护的;

//属性的名称通常用全小写

private$x=null;//在编程建议中,内部使用的属性应该给私有修饰符,而后经过方法取值赋值

//方法的名称通常用小驼峰命名法,第一个单词全小写,剩下的单词首字母大写

//由于PHP不会自动为变量使用$this因此必须主动加上$this伪变量来指向操做的对象

publicfunctionsetX($v){

$this->x=$v;

}

publicfunctiongetX(){

return$this->x;

}

}

固然你能够按本身的喜爱进行定义,但最好保持一种标准,这样会更有效。数据成员在类中使用"var"声明来定义,在给数据成员赋值以前,它们是没有类型的。一个数据成员能够是一个整数,一个数组,一个相关数组(associative array)或者是一个对象。方法在类中被定义成函数形式,在方法中访问类成员变量时,你应该使用$this->name,不然对一个方法来讲,它只能是局部变量。

使用new操做符来建立一个对象:

1

$obj=newSomething;

而后你可使用成员函数经过:$obj->setX(5);

$see=$obj->getX();

echo$see;

在这个例子中,setX成员函数将5赋值给对象的成员变量x(不是类的),而后getX返回它的值5。能够象:$obj->x=6那样经过类引用方式来存取数据成员,这不是一个很好的OOP习惯。我强烈建议经过方法来存取成员变量。若是你把成员变量当作是不可处理的,而且只经过对象句柄来使用方法,你将是一个好的OOP程序员。不幸的是,PHP不支持声明私有成员变量,因此不良代码在PHP中也是容许的。继承在PHP中很容易实现,只要使用extends关键字。

classAnotherextendsSomething{

private$y;

publicfunctionsetY($v){

$this->y=$v;

}

functiongetY(){

return$this->y;

}

}

"Another"类的对象拥有了父类(Something)的所有的数据成员及方法,并且还加上了本身的数据成员和方法。

你可使用

$obj2=newAnother;

$obj2->setY(5);

echo$obj2->getY();

PHP只支持单继承,因此你不能从两个或两个以上类派生出新的类来。你能够在派生类中重定义一个方法,若是咱们在"Another"类中重定义了getX方法(方法重写),咱们就不能使 用"Something"中的getX方法了。若是你在派生类中声明了一个与基派同名的数据成员,那么当你处理它时, 它将“隐藏”基类的数据成员。

你能够在你的类中定义构造函数。构造函数是一个与类名同名的方法,当你建立一个类的对象时会被调用,例如:

classSomething{

private$x=null;

//新版本的构造函数放弃使用类名,而统一使用__construct()

publicfunction__construct($x){

$this->x=$x;

}

publicfunctionsetX($v){

$this->x=$v;

}

publicfunctiongetX(){

return$this->x;

}

//析构函数

publicfunction__destruct(){

}

}

因此你能够建立一个对象,经过:

1

$obj=newSomething(6);

构造函数会自动地把6赋值给数据变量x。构造函数和方法都是普通的PHP函数(”__“两个下划线,魔术方法),因此你可使用缺省参数。

publicfunction__construct($x="3",$y="5"){

}

接着:$obj=newSomething();//x=3andy=5

$obj=newSomething(8);//x=8andy=5

$obj=newSomething(8,9);//x=8andy=9

缺省参数使用C++的方式,因此你不能忽略Y的值,而给X一个缺省参数,参数是从左到右赋值的,若是传入的参数少于要求的参数时,其做的将使用缺省参数。

当一个派生类的对象被建立时,只有它的构造函数被调用,父类的构造函数没被调用,若是你想调用基类的构造函数,你必需要在派生类的构造函数中用parent::__construct()调用。能够这样作是在派生类中全部父类的方法都是可用的。

classAnotherextendsSomething{

publicfunction__construct(){

parent::__construct(5,6);//显示调用基类构造函数

}

}

OOP的一个很好的机制是使用抽象类。抽象类是不能实例化,只能提供给派生类一个接口。设计者一般使用抽象类来强迫程序员从基类派生,这样能够确保新的类包含一些期待的功能。在PHP中没有标准的方法,可是:若是你须要这个特性,能够经过定义基类,并在它的构造函数后加上"die" 的调用,这样就能够保证基类是不可实例化的,在每个方法(接口)后面加上"die" 语句,因此,若是一个程序员在派生类中没有覆盖方法,将引起一个错误。并且由于PHP 是无类型的,你可能须要确认一个对象是来自于你的基类的派生类,那么在基类中增长一个方法来实义类的身份(返回某种标识id),而且在你接收到一个对象参数时校验这个值。固然,若是一个很差的邪恶程序员在派生类中覆盖了这个方法,这种方法就不起做用了,不过通常问题多在懒惰的程序员身上,而不是邪恶的程序员。

固然,可以让基类对程序员没法看到是很好的,只要将接口打印出来作他们的工做就能够了。PHP 5 引入了析构函数的概念,这相似于其它面向对象的语言,如 C++。析构函数会在到某个对象的全部引用都被删除或者当对象被显式销毁时执行。[3]

重载(与覆盖不一样)在PHP中不支持,由于PHP是弱类型语言。在OOP中,你能够重载一个方法来实现两个或重多的方法具备相同的名字,可是有不一样数量或类型的参数(这要看语言)。PHP 是一种松散类型的语言,因此经过类型重载不起做用,然而经过参数的个数不一样来重载也不起做用。

有时在OOP中重载构造函数很是好,这样你能够经过不一样的方法建立对象(变量函数)。在PHP中实现它的技巧是:

classMyclass{

publicfunctionMyclass(){

$name="Myclass".func_num_args();//这个函数返回的是传过来参数的个数

$this->$name();//这里使用的是一个变量函数,以这个变量的值做为函数的名称调用

}

publicfunctionMyclass1($x){

//code

}

publicfunctionMyclass2($x,$y){

//code

}

}

经过在类中的额外的处理,使用这个类对用户是透明的:

 

$obj1=newMyclass('1');//将调用Myclass1

$obj2=newMyclass('1','2');//将调用Myclass2

有时这个很是好用。

多态

多态是对象的一种能力,它能够在运行时刻根据传递的对象参数,决定调用哪个对象的方法。例如,若是你有一个figure的类,它定义了一个draw的方法。而且派生了circle和rectangle 类,在派生类中你覆盖了draw方法,你可能还有一个函数,它但愿使用一个参数x,而且能够调用$x->draw()。若是你有多态性,调用哪一个draw方法就依赖于你传递给这个函数的对象类型。

多态性在象PHP这样的解释语言(想象一下一个C++编译器生成这样的代码,你应该调用哪个方法?你也不知道你拥有的对象是什么类型的,好,这不是重点)是很是容易和天然的。因此PHP固然支持多态性。

classCalc{

functionniceDrawing($x){//假设这是Board类的一个方法

$x->draw();

}

}

classCircle{

publicfunctiondraw(){

echo"画了一个圆";

}

}

classRectangle{

publicfunctiondraw(){

echo"画了一个矩形";

}

}

$board=newCalc;

$obj=newCircle(3,187);

$obj2=newRectangle(4,5);

$board->niceDrawing($obj);//将调用Circle的draw方法

$board->niceDrawing($obj2);//将调用Rectangle的draw方法

用PHP进行面向对象编程

一些"纯化论者(purists)"可能会说PHP不是一个真正的面向对象的语言,这是事实。PHP 是一个混合型语言,你可使用OOP,也可使用传统的过程化编程。然而,对于大型项目,你可能想/须要在PHP 中使用纯的OOP去声明类,并且在你的项目只用对象和类。

随着项目愈来愈大,使用OOP可能会有帮助,OOP代码很容易维护,容易理解和重用。这些就是软件工程的基础。在基于web的项目中应用这些概念就成为未来网站成功的关键。

高级OOP技术

在看过基本的OOP概念后,我就能够向你展现更高级的技术:

序列化(Serializing)

PHP不支持永久对象,在OOP中永久对象是能够在多个应用的引用中保持状态和功能的对象,这意味着拥有将对象保存到一个文件或数据库中的能力,并且能够在之后装入对象。这就是所谓的序列化机制。PHP 拥有序列化方法,它能够经过对象进行调用,序列化方法能够返回对象的字符串表示。然而,序列化只保存了对象的成员数据而不包括方法。

在PHP4中,若是你将对象序列化到字符串$s中,而后释放对象,接着反序列化对象到$obj,你能够继续使用对象的方法!我不建议这样去作,由于(a)文档中没有保证这种行为在之后的版本中仍然可使用。(b) 这个可能致使一种误解,在你把一个序列化后的版本保存到磁盘并退出脚本时。当之后运行这个脚本时,你不能期待着在反序列化一个对象时,对象的方法也会在那里,由于字符串表示根本就不包括方法。

总而言之,PHP 进行序列化对于保存对象的成员变量很是有用。(你也能够将相关数组和数组序列化到一个文件中)。

例子 ;

$obj=newClassfoo();

$str=serialize($obj);//保存$str到磁盘上

$obj2=unserialize($str);//几个月之后//从磁盘中装入str

你恢复了成员数据,可是不包括方法(根据文档所说)。这致使了只能经过相似于使用$obj2->x来存取成员变量(你没有别的方法!)的惟一办法,因此不要在家里试它。

有一些办法能够解决这个问题,我把它留着,由于对这篇简洁的文章来讲,他们太很差。我会很高兴地欢迎在PHP的后续版本中有全序列化的特性。

使用类进行数据存储PHP和OOP一件很是好的事情就是,你能够很容易地定义一个类来操做某件事情,而且不管什么时候你想用的时候均可以调用相应的类。假设你有一个HTML表单,用户能够经过选择产品ID号来选择一个产品。在数据库中有产品的信息,你想把产品显示出来,显示它的价格等等。你拥有不一样类型的产品,而且同一个动做可能对不一样的产品具备不一样的意思。例如,显示一个声音可能意味着播放它,可是对于其它种类的产品可能意味着显示一个存在数据库中的图片。你可使用OOP或PHP来减小编码并提升质量:

定义一个产品的类,定义它应该有的方法(例如:显示),而后定义对每一种类型的产品的类,从产品类派后出来(SoundItem类,ViewableItem类,等等),覆盖在产品类中的方法,使它们按你的想法动做。

根据数据库中每一种产品的类型(type)字段给类命名,一个典型的产品表可能有(id,type,price,description,等等字段)...而后在处理脚本中,你能够从数据库中取出type值,而后实例化一个名为type的对象:

$obj=new$type();

$obj->action();

这是PHP的一个很是好的特性,你能够不用考虑对象的类型,调用$obj的显示方法或其它的方法。使用这个技术,你不须要修改脚本去增长一个新类型的对象,只是增长一个处理它的类。

这个功能很强大,只要定义方法,而不去考虑全部对象的类型,在不一样的类中按不一样的方法实现它们,而后在主脚本中对任意对象使用它们,没有if...else,也不须要两个程序员,只有高兴。

你赞成编程是容易的,维护是便宜的,可重用是真的吗?

若是你管理一组程序员,分配工做就是很简单的了,每一个人可能负责一个类型的对象和处理它的类。

能够经过这个技术实现国际化,根据用户所选的语言字段应用相应的类就能够了,等等。

拷贝和克隆

当你建立一个$obj的对象时,你能够经过$obj2=$obj来拷贝对象,新的对象是$obj的一个拷贝(不是一个引用),因此它具备$obj在当时的状态。有时候,你不想这样,你只是想生成一个象obj类同样的一个新的对象,能够经过使用new语句来调用类的构造函数。在PHP中也能够经过序列化,和一个基类来实现,但全部的其它类都要从基类派生出来。

进入危险区域

当你序列化一个对象,你会获得某种格式的字符串,若是你感兴趣,你能够调究它,其中,字符串中有类的名字(太好了!),你能够把它取出来,象:$herring=serialize($obj);

$vec=explode(':',$herring);//以:为标识符把字符串拆分红一个数组

$nam=str_replace("\",'',$vec[2]);

因此假设你建立了一个"Universe"的类,而且强制全部的类都必须从universe扩展,你能够在universe 中定义一个clone的方法,以下:

classUniverse{

//在新的PHP版本中克隆(__clone())是一个魔术方法,不要和这个方法搞混了

functionclone(){

$herring=serialize($this);

$vec=explode(':',$herring);

$nam=str_replace("\"",'',$vec[2]);

$ret=new$nam;

return$ret;

}

}//而后

$obj=newSomething();//从Universe扩展

$other=$obj->clone();

你所获得的是一个新的Something类的对象,它同使用new方法,调用构造函数建立出的对象同样。我不知道这个对你是否有用,可是Universe类能够知道派生类的名字是一个好的经验。想象是惟一的限制。

模板引擎

Smarty:Smarty的特色是将模板编译成PHP脚本,而后执行这些脚本。很快,很是方便。

Heyes Template Class:一个很是容易使用,但功能强大而且快速的模板引擎,它帮助你把页面布局和设计从代码中分离。

FastTemplate:一个简单的变量插值模板类,它分析你的模板,把变量的值从HTML代码中分离处理。

ShellPage:一个简单易用的类,可让你的整个网站布局基于模板文件,修改模板就能改变整个站点。

STP Simple Template Parser:一个简单、轻量级而且易于使用的模板分析类。它能够从多个模板中组装一个页面,把结果页面输出到浏览器或者文件系统。

OO Template Class:一个你能够用在本身程序中的面向对象的模板类。

SimpleTemplate:一个能够建立和结构化网站的模板引擎。它能够解析和编译模板。

bTemplate:短小可是快速的模板类,容许你把PHP逻辑代码从HTML修饰代码中分离。

Savant:一个强大且轻量级的PEAR兼容模板系统。它是非编译型的,使用PHP语言自己作为它的模板语言。

ETS - easy template system:可使用彻底相同数据重组模板的模板系统。

EasyTemplatePHP:适用于你的站点的一个简单可是强大的模板系统。

vlibTemplate:一个快速、全能的模板系统,它包含一个缓存和调试类。

AvanTemplate:多字节安全的模板引擎,占用不多系统资源。它支持变量替换,内容块能够设置显示或隐藏

Grafx Software’s Fast Template:一个修改版本的Fast Template系统,它包括缓存功能,调试控制台以及沉默去除为赋值块。

TemplatePower:一个快速、简单、功能强大的模板类。主要功能有嵌套的动态块支持,块/文件包含支持以及显示/隐藏未赋值的变量。

TagTemplate:这个库的功能被设计来使用模板文件,同时容许你从HTML文件检索信息。

htmltmpl: templating engine:一个适用于Python和PHP的模板引擎。它面向但愿在项目中分离代码和设计的web应用开发人员。

PHP Class for Parsing Dreamweaver templates:一个分析Dreamweaver模板的简单类,被用于Gallery 2 和WordPress的自定义模块中。

MiniTemplator (Template Engine):针对HTML文件的一个紧凑型模板引擎。对于模板变量和块定义它具备简单的语法。其中块能够嵌套。

Layout Solution:简化网站开发和维护。它拥有经常使用的变量和页面元素使你不须要重复作页面布局工做。

Cached Fast Template:它已经归入 FastTemplate ,容许你缓存模板文件,甚至能够在分离的块内容上缓存不一样的规格。

TinyButStrong:一个支持MySQL,Odbc,Sql-Server和ADODB的模板引擎。它包含7个方法和两个属性。

Brian Lozier’s php based template engine:只有2K大小,很是快而且是面向对象设计。

WACT:一个从设计中分离代码的模板引擎。

PHPTAL:一个PHP下面的XML/XHTML模板库。

Rong_View_Wudimei:Wudimei开发的国产框架Rong Framework的模板引擎,它相似于smarty,优势是速度快,缺点是模板标签较少,不过够用了。

框架介绍thinkphp

ThinkPHP是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。而且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保能够稳定用于商业以及门户级的开发。

PHP认证级别

PHP课程由初级(IFE)、中级(IPE)和高级(IAE)三个部分。

IFE即Index Front-end Engineer的缩写,指数前端工程师的意思。

IPE即 Index PHP Engineer 的缩写,意思是指数PHP工程师。

IAE即 Index architecture/advanced engineer 的缩写,意思是:指数高级/架构工程师。

PHP安全

PHP其实不过是Web服务器的一个模块功能,因此首先要保证Web服务器的安全。固然Web服务器要安全又必须是先保证系统安全,这样就扯远了,无穷无尽。常见的web安全漏洞有:注入攻击,跨站攻击,服务器自身漏洞等,对应的详细解释,详见:扩展阅读中的《WEB安全性-2010_OWASP_TOP10》,这里有很详尽的解释。

PHP的优势学习过程和方法

PHP的语法相似于C,Perl,ASP或者JSP。对于那些对上述之一的语言较熟悉的人来讲,PHP太简单了。相反的,若是你对PHP了解较多,那么你对于其余几种语言的学习都很简单了。你只须要很短的时间内将PHP的核心语言特色所有掌握,你可能已经很是了解HTML,甚至你已经知道怎样用编辑设计软件或者手工来制做好看的WEB站点。因为PHP代码可以无障碍的添加进你的站点,在你设计和维护站点的同时,你能够很轻松的加入PHP使得你的站点更加具备动态特性。

数据库链接

PHP能够编译成具备与许多数据库相链接的函数。PHP与MySQL是绝佳的组合,若是再加上Apache服务器,就是至关完美的了。你还能够本身编写外围的函数取间接存取数据库。经过这样的途径当你更换使用的数据库时,能够轻松的更改编码以适应这样的变化。PHPLIB就是最经常使用的能够提供通常事务须要的一系列基库。

可扩展性

就像前面说的那样,PHP已经进入了一个高速发展的时期。对于一个非程序员来讲为PHP扩展附加功能可能会比较难,可是对于一个PHP程序员来讲并不困难。

PHP可伸缩性

传统上网页的交互做用是经过CGI来实现的。CGI程序的伸缩性不很理想,由于它为每个正在运行的CGI程序开一个独立进程。解决方法就是将常常用来编写CGI程序的语

记事本保存php文件注意事项

记事本保存php文件注意事项

言的解释器编译进你的web服务器(好比mod_perl,JSP)。PHP就能够以这种方式安装,虽然不多有人愿意这样以CGI方式安装它。内嵌的PHP能够具备更高的可伸缩性。

PHP免费安装

PHP源代码包安装版:这个版本适合已经有本身独立的网站域名、网站空间的专业网站建设用户。使用方法依然其为简单,只需三步:

第1、到官方网站:下载 PHP源代码包安装版最新版本,解压下载文件,将其中的所有内容上传到你的支持PHP的网站空间

第2、改更文件属性,请将根目录下以PHP为后缀名的文件和”/include/domain.php”和 “/attachments” 和 “/data”文件夹以及文件夹下全部的文件属性改为“可读”、“可写”、“可执行”,一般是“755”。

第3、打开你的网站根目录,系统会自动运行setup安装程序,按提示点下一步操做便可。

友情提示:当你下载咱们的软件并看到这份说明时,则说明你必定是对企业网站建设有必定的需求或者你是一个网站建设技术学习者。

文件格式

对于只含有 php 代码的文件,咱们将在文件结尾处忽略掉 "?>"。这是为了防止多余的空格或者其它字符影响到代码。

例如:

$foo = 'foo';

缩进应该可以反映出代码的逻辑结果,尽可能使用四个空格,禁止使用制表符TAB,由于这样可以保证有跨客户端编程器软件的灵活性。

例如:if(1==$x){

$indented_code=1;

if(1==$new_line){

$more_indented_code=1;

}

}

变量赋值建议保持相等间距和排列。

例如:$variable='demo';

$var='demo2';

每行代码长度应控制在80个字符之内,最长不超过120个字符。由于 linux 读入文件通常以80列为单位,就是说若是一行代码超过80个字符,那么系统将为此付出额外操做指令。这个虽然看起来是小问题,可是对于追求完美的程序员来讲也是值得注意并遵照的规范。

每行结尾不容许有多余的空格。

Php文件记事本编辑乱码问题

通常状况下,记事本编辑器在对文件进行完编辑并保存之时,其默认编码为ANSI,中文。然则更多的时候,php在语言环境设置时语言多数为utf-8,直接保存并用于apache等http-server解析后就会出现乱码。

为此,应该注意在用记事本编辑完后可将文件用“另存为”的方式对文件进行保存,并将“文件类型”选择“全部文件”,编码与文件指定语言编码一致便可。[4]

算数运算符

PHP 的运算符包括算术运算符、赋值运算符、比较运算符和逻辑运算符。[5]

算数运算符:

加,减,乘,除,取模(取余)

+、-、*、/、%

赋值运算符:(如下解释在许多书中有所不一样)

赋值,加赋值,减赋值、乘赋值、除赋值,连字赋值

=、+=、-=、*=、/=、.=

位运算符:

位与、位或、位亦或、位非、左移、右移

&、|、^、~、<<、>>

比较运算符:

等于、全等于、不等于、不全等于、大于、小于、大于等于、小于等于

==、===、!=(<>)、!==、>、<、>=、<=

逻辑运算符:

逻辑与、逻辑或、逻辑非、逻辑亦或

&&、||、!、xor

字符串运算符:

. 链接两个字符串

做者:黄花菜已凉 连接:http://www.jianshu.com/p/356737ecea38 來源:简书 著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。
相关文章
相关标签/搜索