首页编程php实践教程(php手机编程软件)

php实践教程(php手机编程软件)

编程之家2026-05-221135次浏览

大家好,今天小编来为大家解答以下的问题,关于php实践教程,php手机编程软件这个很多人还不知道,现在让我们一起来看看吧!

php实践教程(php手机编程软件)

php新手如何入门

PHP的背景恐怕就不用赘言了,我相信大家选择一种语言,并不是看它的背景和悠久历史,更重要的是看它的实用性,华而不实的语言哪怕是再辉煌的历史,也毕将步向没落,可喜的是PHP经受住了考验,也因此,它确实是一种值得学习的语言。

一直是听从别人的经验长大的,也因此在前辈们的经验里让少走了许多的弯路,更快的步入了正规,在此向那些我至尽不知道其名字的前辈们道声谢谢,在的眼里,帮助不分大小,只要是帮助,总会让的心里暖融融的,我想,前辈们帮助我,并不是为了得到我的一句谢谢,更多的是出于一种责任感和对的期望,所以我想,只有学好PHP,才能对得起前辈们的汗水。

正如我所说的,也终于感觉到了一种责任感,不知道自己的经验到底能帮助新手多少,但是明白,现在到了履行责任的时候了,我有必要把自己的经验告诉给所有希望学好PHP的人,只有这样才能让中国的PHP不断的进步,不断的发展,在世界上占据一席之地。

学习PHP的这段期间,感觉国内的PHP环境越来越成熟,规范也在逐渐的健全,PHPCHINA的成立,标志着与官方直接挂钩的PHP机构在中国正式落户了,在此献上迟到的掌声!

好的,切入正题:

我想在讲述自己的学习方式前,对那些期望能从我的文章中获得有用信息的人说一句心里话:

php实践教程(php手机编程软件)

的文章不会对您的学习起到实质性的作用,您能否成功,还得靠自己的,坚持,坚持,再坚持,就是步入成功的不二法门。

我先把我自己学习PHP的过程做一下概括:

(1)熟悉HTML/CSS/JS等网页基本元素,完成阶段可自行制作完整的网页,对元素属性达到熟悉程度

(2)理解动态语言的概念,运做机制,熟悉PHP语法

(3)学习如何将PHP与HTML结合起来完成简单动态页面

(4)接触MYSQL,开始设计数据库程序

php实践教程(php手机编程软件)

(5)不断巩固,摸透大部分PHP常用函数,并可理解OOP,MYSQL优化,以及模板

(6)完成一个功能齐全的动态站点

我的这套线路可能跟许多学习PHP的爱好者不谋而合,这也算是一个循序渐进的学习过程,不过新手不要看到上面的概括就以为学习蛮简单的,在此不得不对您稍微泼一下冷水,任何东西其实都不简单,即使是小吃部的烧饼也不是一下子就会做成的。

我先解释一下我的学习思路。

首先,理解网站这一概念之后不难看出,任何网站都是由网页组成的,也就是说想完成网站,必须先学会做网页,因此必须要掌握了HTML,才能为今后制作网站打下基础。

在学习HTML中我想边学边做是最有效的方式,当然这一方式对于学习PHP同样是最有效的。

HTML中的任何元素都要亲自实践,只有明白了什么元素会起到什么效果之后,你才会记忆深刻,而一味的啃书,绝对是不行的,我想大部分新手之所以觉得概念难学,大部分是一个字“懒”,懒是阻止进步的最大敌人,所以克服掉懒的习惯,才能更快的学好一样东西。

也许您在学习PHP的时候只想尽快的开发一个网站,也就会想我做网站,干嘛要学什么网页这些小儿科?不难看出,眼高手低的新手不在少数,这种思想无疑于建造空中楼阁,你不建地基,何来的房顶呢?

OK,掌握静态网页的制作技术是学习开发网站的先决条件,这一点就讲到这里,因为这篇文章不是教程文章,也就不对技术进行深入的刨析了。

我假设你目前已经可以完成一个静态页面了,当然,做的好看难看是另外一说,的第一个网页也没好看到哪去,但是“孩子”再丑,咱们做“爹妈”的也不能嫌弃不是?这毕竟是咱的成果。

那么咱们就开始学习动态语言的概念吧,刚一接触动态语言,可能很多人都会蒙了,怎么这乱七八糟的东西,在网页里显示的时候却是另外一码事?其实这并不算乱七八糟,你写的HTML代码不也一样是一堆堆的字符吗?毕竟,代码并不是作为直接输出的,而是经过处理的,说白了,HTML是经过HTML解析器,而 PHP当然也就通过PHP解析器了,跟学习HTML一样的道理,想让任何的解析器完成操作,就必须使用它们专用的语法结构,所以PHP长相奇怪也就不足为奇了。

对于PHP的理解是新手最难迈过的一道门槛,不过你应该感到幸运的是PHP已经最大极限的为了新手而努力了,如果你学过其他的语言,也许会觉得PHP的确相当的简单,但是如果你之前什么都没学过,那么阿弥陀佛,硬着头皮琢磨吧。

书过三遍自然熟,这个简单的道理告诉我们,即使你理解不了PHP,但是也必须先跟它混个脸熟,看,一遍遍的看,看的同时一边琢磨,一边按照它所教的打代码,即使你搞不清楚那些代码到底是干嘛的,但是起码你应该找找感觉。

在一段挣扎之后,聪明的你,显然已经逐渐的开悟了,慢慢的理解了编程的概念,那么祝贺你,你已经迈出了成功的第一步。

搞清楚HTML和PHP的概念,那么PHP和HTML混合编程应该不成问题,在这期间,你完全可以让PHP给你算算一加一等于几,然后在浏览器输出,不要觉得幼稚,这的确是跟阿波罗登月一样,你打的是一小段代码,但是对于你的编程之路,可是迈出了一大步啊!兴奋吧?但是不得不再给你泼点冷水,您还是菜鸟一个。

高兴一段时间就必须继续努力了,接下来就是学习数据库了,MYSQL可算是PHP的黄金搭档了,不过,虽然话是这么说,你也可能恨不得把MYSQL给生吞活剥了,因为这一行一列的东东简直让自己头晕目眩。

头晕归头晕,目眩归目眩,你不可能吃饭的时候咬了自己一下舌头就从此不吃饭了不是?放下畏惧,继续努力,咱们是来征服它的,而不是被它征服的,振奋起来吧同志。

在一番搏斗之后,你终于理解了数据库的概念,而且让你兴奋不已的是你终于可以通过PHP来连接数据库了,这期间你是怎么学会的,我们不去考证了,但是事实证明,你已经可以了。

学会了PHP和数据库的你,无疑是左手拿着MOTOLOLA右手拿着NOKIA,要多潇洒,有多潇洒,哈哈,终于学会了,但是可能这个时候,又会有人不经意的拍拍肩膀对你说:哥们,别高兴的太早,你还是菜鸟,离学会还差着一大截呢!

等到你发奋努力的学会了用PHP成功的插入,删除,更新数据的时候,显然,你已经距离成功指日可待了。

这个时候的你也许是这种状态:

你会HTML吗?会,我能编好几个大表格排板的网页啦!

你会PHP吗?会,我会把一加一的运算写在函数里,然后调用啦!

你会MYSQL吗?会,我会把我的信息在数据库里插入删除啦

那,接下来你该怎么做呢?我觉得,小试一下身手,大概是没问题了,那么交给你个任务,做个留言本吧,这和HELLO WORLD有一比啊!^_^,同是新手面临的第一道关。

花了一段时间,你终于学会把表单的数据插入数据库,然后显示出来了,应该说一个程序的雏形已经诞生了。

但是,你可能瞅瞅东,看看西,人家这个编论坛,那个CMS,还有那啥CRM,我啥时候写一个呢?

不要急,可以说你的马步已经扎的差不多了,接下来就要开始练把势的时候了,如果有条件的话,用笔或者打印一个简易的PHP手册在身上,时不时的摸出来看看,记得,去WC也不能放过(^2^)。

再有条件的话,买本书看看吧,《PHP+MYSQL WEB开发(第三版)》号称圣经级,(也许是个不错的选择(声明:作者没给我啥好处费,我也不是书托,隔着大老远,我连他老兄的面都没见过的说-_-)

巩固了自己的知识,熟悉了PHP和MYSQL开发的要领之后,再回头看你写的那个留言本,你也许会怀疑那真的是你写的吗?当然,如果屋里还有鬼的话,也许是它写的-_-

这个时候,你的留言本应该加入注册以及分页功能了,而如果你更强的话,UI(用户界面)也可以加强,完成之后,感觉是不是特有成就感?不管怎么样,咱好歹是写了一个动态网站程序了,放在自己的网站上耍耍吧,让好朋友来看看,嘿,看咱写的多棒,然后再在网上宣传一下。

几天之后你再打开留言本,哎?哇,一下弹出N多页面!很明显,你的留言本并没有做好安全防范,被人用JS代码小小的耍了一下,我很同情你这个时候的感受,但是没有别的办法了,继续努力吧!

你发奋努力,熟悉了安全方面的问题,然后又设计了一些程序,感觉还不错。

那么接下来,这就算学会啦?NO,NO,NO,还早呢,你至尽还没碰过OOP之类的吧?模板呢?

恩,学!加紧学呀学,学会了这些之后,你又学会了生成静态网页,现在你应该接触一下XML了,恩,XML也了解了,那么AJAX你也得接触接触吧?AJAX完了….然后…

你绝对不会发现你全部都学会了,一些真正的强人总会搞出新玩意来丢给你,你不学就落后了,也印证了前人的经验,果然是学无止境啊!

我想通过我的一番YY,你也应该大致熟悉了一些学习过程,也许我的过程和你的有些出路,但是不管怎么样是殊途同归,我写这么多,也只是给大家一个借鉴的机会,至于好与不好,不敢打包票^0^

看完之后你发现,罗嗦这么多,对我一点用处没有啊,我知道该怎么学,但是我想如何才能更快的学,一周速成,啊不,24小时速成那种,你有没?

我…….我没有,但是2分钟之内把你扁进医院里,我倒是有把握-_-

学东西,永远不要妄想有速成这一说,告诉你了一个方式,但是缺少努力这一环节,那也是白搭。

但是有一点我可以给你保证的就是,你学会了PHP,那么学其他的语言,肯定速成,反过来也一样,如果你之前学过其他的语言,那么学PHP肯定快。

不过语法好学,但是怎么用语法来实现每个人都有每个人的方式,几乎是各有千秋。然而借鉴别人成功的代码,绝对是有益无害,因此,多看那些经过千锤百炼凝出来的经典代码,是进阶的最好方法。

讲了这么多,无非是想说:学习PHP不仅要掌握方法,更多的是付出汗水,我不希望看到中途放弃的人,相信自己,相信自己的选择,更要相信自己的能力,如果自己想放弃,暴力一点的话,就自己抽自己一个嘴巴,然后大吼:别人可以,我为什么就不可以?(是不是有点阎罗教练的味道,的确是电影看多了,抽嘴巴是会痛的,各位其实明白这个道理了就行了)

另外要叮嘱各位的是,抵御诱惑,ASP/PHP/JSP/.NET的对比也许会让你无所适从,你也许学了一半PHP,又开始打C#的主意,或者有人说 JAVA很强,这个时候的你绝对不能动摇,哪怕你真想学,也得学会了PHP。然后再学,见异思迁是最不可取的,狗熊掰玉米就是这个道理,如果经常中途放弃,只能是一无所获,还浪费了N多的时间和经历,得不偿失,最重要的是,你会被别人瞧不起,没有人会喜欢和见异思迁的人交朋友,因为这种人太不安分,太不可靠,因此,你必须要强迫自己完成自己的目标,哪怕可能会很难受,也得坚持,毅力就是这么锻炼出来的。

php教程之php的几种运行模式

php一共分为五大运行模式:包括cgi、fast-cgi、cli、isapi、apache模块的 DLLCGI

CGI即通用网关接口(Common Gateway Interface),它是一段程序,通俗的讲CGI就象是一座桥,把网页和WEB服务器中的执行程序连接起来,它把HTML接收的指令传递给服务器的执行程序,再把服务器执行程序的结果返还给HTML页。CGI的跨平台性能极佳,几乎可以在任何操作系统上实现。

CGI方式在遇到连接请求(用户请求)先要创建cgi的子进程,激活一个CGI进程,然后处理请求,处理完后结束这个子进程。这就是fork-and-execute模式。所以用cgi方式的服务器有多少连接请求就会有多少cgi子进程,子进程反复加载是cgi性能低下的主要原因。都会当用户请求数量非常多时,会大量挤占系统的资源如内存,CPU时间等,造成效能低下。CGI-FCGI

fast-cgi是cgi的升级版本,FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次。PHP使用PHP-FPM(FastCGI Process Manager),全称PHP FastCGI进程管理器进行管理。FastCGI的工作原理

1、Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module)

2、FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Server的连接。

3、当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。

4、 FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。在CGI模式中,php-cgi在此便退出了。在上述情况中,你可以想象CGI通常有多慢。每一个Web请求PHP都必须重新解析php.ini、重新载入全部扩展并重初始化全部数据结构。使用FastCGI,所有这些都只在进程启动时发生一次。一个额外的好处是,持续数据库连接(Persistent database connection)可以工作。APACHE2HANDLER

PHP作为Apache模块,Apache服务器在系统启动后,预先生成多个进程副本驻留在内存中,一旦有请求出现,就立即使用这些空余的子进程进行处理,这样就不存在生成子进程造成的延迟了。这些服务器副本在处理完一次HTTP请求之后并不立即退出,而是停留在计算机中等待下次请求。对于客户浏览器的请求反应更快,性能较高。

apache模块的DLL:

该运行模式是我们以前在windows环境下使用apache服务器经常使用的,而在模块化(DLL)中,PHP是与Web服务器一起启动并运行的。(是apache在CGI的基础上进行的一种扩展,加快PHP的运行效率)ISAPI:

ISAPI即Internet Server Application Program Interface,是微软提供的一套面向Internet服务的API接口

一个ISAPI的DLL,可以在被用户请求激活后长驻内存,等待用户的另一个请求,还可以在一个DLL里设置多个用户请求处理函数,此外,

ISAPI的DLL应用程序和WWW服务器处于同一个进程中,效率要显著高于CGI。(由于微软的排他性,只能运行于windows环境)cli:

cli是php的命令行运行模式,大家经常会使用它,但是可能并没有注意到(例如:我们在linux下经常使用“php-m”查找PHP安装了那些扩展就是PHP命令行运行模式;有兴趣的同学可以输入php-h去深入研究该运行模式)总结:

每种运行模式都有自己的优缺点,没有绝对的好与坏,主要是看大家处理何种环境。

php高级教程

php高级教程

php是it行业语言,也是一门较热的网络技术,下面就由我为大家介绍一下php高级教程,欢迎大家阅读!

一、PHP-多维数组:

$cars= array(

array("huawei","12","11"),

array("meizu","23","12"),

array("iphone","12","4")

);

$title= array("手机总共有:","个,已经卖出去了","个!");

for($i=0;$i{ for($j=0;$j{ echo$cars[$i][$j]; echo$title[$j];} echo"";}?>

输出:

huawei手机总共有:12个,已经卖出去了11个!

meizu手机总共有:23个,已经卖出去了12个!

iphone手机总共有:12个,已经卖出去了4个!

二、PHP日期和时间

date()函数的格式参数是必需的,它们规定如何格式化日期或时间。

下面列出了一些常用于日期的字符:

·d-表示月里的某天(01-31) D-表示当前这天的英文星期简写

·m-表示月(01-12) M-表示当前月的英文缩写

·Y-表示年(四位数) y-表示年(后两位数)

·1-表示周里的某天 L-返回0

其他字符,比如"/","."或"-"也可被插入字符中,以增加其他格式。

echo"今天是". date("YYYY/m/d")."";//2017201720172017/06/26由此可见不能用js中yyyy-mm-dd的形式

echo"今天是". date("Y.m.d")."";//2017.06.26

echo"今天是". date("Y-M-D")."";//17-Jun-Mon

echo"今天是". date("l")."";//Monday星期全称

echo"今天是". date("L")."";//0

?>

获得简单的时间

下面是常用于时间的字符:

date_default_timezone_set("Asia/Shanghai");//设置时区

echo date_default_timezone_get(oid);//获取当前时区

·h-带有首位零的 12小时小时格式 H-24小时格式

·i-带有首位零的分钟 I-0

·s-带有首位零的秒(00-59) S-返回th我也不知道是什么鬼

·a-小写的午前和午后(am或 pm) A-返回大写格式:AM或PM

echo"现在是". date("h:i:sa")."";//现在是 02:15:44pm

echo"现在是". date("H:I:SA")."";//现在是 14:0:thPM

通过 PHP mktime()创建日期

date()函数中可选的时间戳参数规定时间戳。如果您未规定时间戳,将使用当前日期和时间

语法

mktime(hour,minute,second,month,day,year)

$d=mktime(9,12, 31, 6, 10, 215);

echo"创建日期是". date("Y-m-d h:i:sa",$d)."";//在date方法里面传参则取的是参数中的时间,如果不传的话则取的是当前时间

通过 PHP strtotime()用字符串来创建日期

PHP strtotime()函数用于把人类可读的字符串转换为Unix时间。

$d=strtotime("10:38pm April 15 2015");

echo"创建日期是". date("Y-m-d h:i:sa",$d);

如果输入了它不能识别的字符串则保存为 1970-01-01 12:00:00am

计算两个时间段内的时间所有的周六

$startdate= strtotime("Saturday");

$enddate= strtotime("+6 weeks",$startdate);

while($startdate<$enddate){

echo date("M d",$startdate),"";

$startdate= strtotime("+1 week",$startdate);//在$startdate基础上加一个礼拜,你还可以加1天,1个月,1年

}

?>

计算距离某一天还有多长时间

$d1=strtotime("2017-7-30");

$d2=ceil(($d1-time())/60/60/24);

echo"距离十二月三十一日还有:".$d2."天。";

?>

三、PHP Cookies

cookie常用于识别用户。cookie是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 PHP,您能够创建并取回 cookie的值。

创建cookie

setcookie()函数用于设置 cookie。

注释:setcookie()函数必须位于

标签之前。

语法

setcookie(name, value, expire, path, domain);

在下面的例子中,我们将创建名为"user"的 cookie,把为它赋值"Alex Porter"。我们也规定了此 cookie在一小时后过期:

setcookie("user","Alex Porter", time()+3600);

?>

注释:在发送 cookie时,cookie的值会自动进行 URL编码,在取回时进行自动解码(为防止 URL编码,请使用setrawcookie()取而代之)。

取回 Cookie的值

PHP的$_COOKIE变量用于取回cookie的值。

// Print a cookie

echo$_COOKIE["user"];

// A way to view all cookies

print_r($_COOKIE);

?>

删除 cookie当删除 cookie时,您应当使过期日期变更为过去的时间点。

// set the expiration date to one hour ago

setcookie("user","", time()-3600);

?>

如果浏览器不支持 cookie该怎么办?

如果您的应用程序涉及不支持cookie的浏览器,就不得不采取其他方法在应用程序中从一张页面向另一张页面传递信息。一种方式是从表单传递数据(有关表单和用户输入的内容,稍早前我们已经在本教程中介绍过了)。

下面的表单在用户单击提交按钮时向"welcome.php"提交了用户输入:

Name:

Age:

取回"welcome.php"中的值,就像这样:

Welcome.

You are years old.

四、PHP Sessions

PHP Session变量

当您运行一个应用程序时,您会打开它,做些更改,然后关闭它。这很像一次会话。计算机清楚你是谁。它知道你何时启动应用程序,并在何时终止。但是在因特网上,存在一个问题:服务器不知道你是谁以及你做什么,这是由于 HTTP地址不能维持状态。

通过在服务器上存储用户信息以便随后使用,PHP session解决了这个问题(比如用户名称、购买商品等)。不过,会话信息是临时的,在用户离开网站后将被删除。如果您需要永久储存信息,可以把数据存储在数据库中。

Session的工作机制是:为每个访问者创建一个唯一的 id(UID),并基于这个 UID来存储变量。UID存储在cookie中,亦或通过 URL进行传导。

开始 PHP Session

在您把用户信息存储到 PHPsession中之前,首先必须启动会话。

注释:session_start()函数必须位于

标签之前:

上面的代码会向服务器注册用户的会话,以便您可以开始保存用户信息,同时会为用户会话分配一个 UID。

存储 Session变量

存储和取回session变量的正确方法是使用 PHP$_SESSION变量:

session_start();

// store session data

$_SESSION['views']=1;

?>

//retrieve session data

echo"Pageviews=".$_SESSION['views'];

?>

输出:

Pageviews=1

在下面的例子中,我们创建了一个简单的 page-view计数器。isset()函数检测是否已设置"views"变量。如果已设置"views"变量,我们累加计数器。如果"views"不存在,则我们创建"views"变量,并把它设置为 1:

session_start();

if(isset($_SESSION['views']))

$_SESSION['views']=$_SESSION['views']+1;

else

$_SESSION['views']=1;

echo"Views=".$_SESSION['views'];

?>

终结 Session

如果您希望删除某些session数据,可以使用 unset()或 session_destroy()函数。

unset()函数用于释放指定的 session变量:

unset($_SESSION['views']);

?>

您也可以通过session_destroy()函数彻底终结 session:

session_destroy();

?>

注释:session_destroy()将重置 session,您将失去所有已存储的session数据。

五、PHP错误处理

错误处理方法:

·简单的"die()"语句

·自定义错误和错误触发器

·错误报告

为了避免用户获得类似上面的错误消息,我们在访问文件之前检测该文件是否存在:

if(!file_exists("welcome.txt"))

{

die("File not found");

}

else

{

$file=fopen("welcome.txt","r");

}

?>

假如文件不存在,您会得到类似这样的错误消息:

File not found

比起之前的代码,上面的代码更有效,这是由于它采用了一个简单的错误处理机制在错误之后终止了脚本。

不过,简单地终止脚本并不总是恰当的方式。让我们研究一下用于处理错误的备选的 PHP函数。

创建自定义错误处理器

创建一个自定义的错误处理器,可以在PHP中发生错误时调用该函数。

该函数必须有能力处理至少两个参数(error level和 error message),但是可以接受最多五个参数(可选的:file, line-number以及error context):

语法

error_function(error_level,error_message,

error_file,error_line,error_context)

参数描述

error_level:必需。为用户定义的错误规定错误报告级别。必须是一个值数。参见下面的表格:错误报告级别。

error_message:必需。为用户定义的错误规定错误消息。

error_file:可选。规定错误在其中发生的文件名。

error_line:可选。规定错误发生的行号。

error_context:可选。规定一个数组,包含了当错误发生时在用的每个变量以及它们的值。

创建错误处理函数

function customError($errno,$errstr)

{

echo"Error: [$errno]$errstr

";

echo"Ending Script";

die();

}

现在,我们已经创建了一个错误处理函数,我们需要确定在何时触发该函数。

Set ErrorHandler

PHP的默认错误处理程序是内建的错误处理程序。我们打算把上面的函数改造为脚本运行期间的默认错误处理程序。

可以修改错误处理程序,使其仅应用到某些错误,这样脚本就可以不同的方式来处理不同的错误。不过,在本例中,我们打算针对所有错误来使用我们的自定义错误处理程序:

set_error_handler("customError");

由于我们希望我们的自定义函数来处理所有错误,set_error_handler()仅需要一个参数,可以添加第二个参数来规定错误级别。

//定义错误处理函数

function customError($errno,$errstr)

{

echo"rror: [$errno]$errstr";

}

//设置错误处理函数

set_error_handler("customError");

//触发错误

echo($test);

?>

可能的错误类型:

·E_USER_ERROR-致命的用户生成的run-time错误。错误无法恢复。脚本执行被中断。

·E_USER_WARNING-非致命的用户生成的run-time警告。脚本执行不被中断。

·E_USER_NOTICE-默认。用户生成的`run-time通知。脚本发现了可能的错误,也有可能在脚本运行正常时发生。

例子

在本例中,如果"test"变量大于"1",则发生E_USER_WARNING错误。如果发生了 E_USER_WARNING,我们将使用我们的自定义错误处理程序并结束脚本:

//error handler function

function customError($errno,$errstr)

{

echo"Error: [$errno]$errstr

";

echo"Ending Script";

die();

}

//set error handler

set_error_handler("customError",E_USER_WARNING);

//trigger error

$test=2;

if($test>1)

{

trigger_error("Value must be 1 or below",E_USER_WARNING);

}

?>

错误记录

通过 E-Mail发送错误消息

function customError($errno,$errstr)

{

echo"Error: [$errno]$errstr";

echo"Webmaster has been notified";

error_log("Error: [$errno]$errstr",1,

"526369948@qq.com","From: 526369948@qq.com");

}

六、PHP异常处理

异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程。这种情况称为异常。

当异常被触发时,通常会发生:

·当前代码状态被保存

·代码执行被切换到预定义的异常处理器函数

·根据情况,处理器也许会从保存的代码状态重新开始执行代码,终止脚本执行,或从代码中另外的位置继续执行脚本

我们将展示不同的错误处理方法:

·异常的基本使用

·创建自定义的异常处理器

·多个异常

·重新抛出异常

·设置顶层异常处理器

Try, throw和 catch

要避免上面例子出现的错误,我们需要创建适当的代码来处理异常。

正确的处理程序应当包括:

1.Try-使用异常的函数应该位于"try"代码块内。如果没有触发异常,则代码将照常继续执行。但是如果异常被触发,会抛出一个异常。

2.Throw-这里规定如何触发异常。每一个"throw"必须对应至少一个"catch"

3.Catch-"catch"代码块会捕获异常,并创建一个包含异常信息的对象

让我们触发一个异常:

//创建可抛出一个异常的函数

function checkNum($number)

{

if($number>1)

{

throw new Exception("Value must be 1 or below");

}

return true;

}

//在"try"代码块中触发异常

try

{

checkNum(2);//如果抛出异常则执行catch中的语句,这里就不接着往下执行了

//If the exception is thrown, this text will not be shown

echo'If you see this, the number is 1 or below';

}

//捕获异常

catch(Exception$e)

{

echo'Message:'.$e->getMessage();

}

?>

上面代码将获得类似这样一个错误:

Message: Value must be 1 or below

创建一个自定义的 Exception类

创建自定义的异常处理程序非常简单。我们简单地创建了一个专门的类,当 PHP中发生异常时,可调用其函数。该类必须是 exception类的一个扩展。

这个自定义的exception类继承了 PHP的 exception类的所有属性,您可向其添加自定义的函数。

我们开始创建exception类:

class customException extends Exception//extends相当于继承关键字

{

public function errorMessage()//定义了自己的报错函数

{

//error message在继承的类中,可以访问基类的方法

$errorMsg='Error on line'.$this->getLine().' in'.$this->getFile()

.':'.$this->getMessage().' is not a valid E-Mail address';

return$errorMsg;

}

}

$email="someone@example...com";

try

{

//check if

if(filter_var($email, FILTER_VALIDATE_EMAIL)=== FALSE)

{

//throw exception if email is not valid

throw new customException($email);

}

}

catch(customException$e)

{

//display custom message

echo$e->errorMessage();

}

?>

这个新的类是旧的exception类的副本,外加 errorMessage()函数。正因为它是旧类的副本,因此它从旧类继承了属性和方法,我们可以使用 exception类的方法,比如 getLine()、getFile()以及 getMessage()。

多个异常

可以为一段脚本使用多个异常,来检测多种情况。

可以使用多个if..else代码块,或一个 switch代码块,或者嵌套多个异常。这些异常能够使用不同的 exception类,并返回不同的错误消息:

好了,文章到此结束,希望可以帮助到大家。

数据库管理系统的功能包括?数据库管理系统的分类编程教学网站 编程网站