php教程_php面向对象汇总课件

PPT
  • 阅读 25 次
  • 下载 0 次
  • 页数 49 页
  • 大小 497.501 KB
  • 2022-11-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档25.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
php教程_php面向对象汇总课件
可在后台配置第一页与第二页中间广告代码
php教程_php面向对象汇总课件
可在后台配置第二页与第三页中间广告代码
php教程_php面向对象汇总课件
可在后台配置第三页与第四页中间广告代码
php教程_php面向对象汇总课件
php教程_php面向对象汇总课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 49
  • 收藏
  • 违规举报
  • © 版权认领
下载文档25.00 元 加入VIP免费下载
文本内容

【文档说明】php教程_php面向对象汇总课件.ppt,共(49)页,497.501 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-44839.html

以下为本文档部分文字说明:

PHP中的错误信息php.ini中配置错误消息php中错误消息处理php代码中调整错误级别自定义错误处理PHP5中的SPL模块什么是SPLspl.php中的异常处理类spl.php中的其它异常类PHP5异常捕获异常实例抛出异常在代码中捕获异常在代码中捕获异常(2)一

个catch块处理多种异常多个catch块处理异常异常处理块嵌套异常向外抛出PHP5自定义异常自定义异常异常处理实例验证实例验证实例代码PHP中的错误信息php.ini中配置错误消息在PHP4中,没有异常Exception这个概念,只有错误Error。我们可以

通过修改php.ini文件来配置用户端输出的错误信息。在php.ini中,一个分号;表示注释。Php.ini将能够显示的错误类型分为如下种类在php.ini中error_reporting控制输出到用户端的消息种类。以下几种是php.in

i中推荐的几种配置。error_reporting=E_ALL表示输出所有的信息。error_reporting=E_ALL&~E_NOTICE表示输出所有的错误,除了提示。error_reporting=E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_

ERROR|E_CORE_ERROR表示输出所有的ERROR信息。在php.ini中,display_errors可以设置是否将以上设置的错误信息输出到用户端。display_errors=On输出到用户端(调试代码时候,打开这项更方便)display_err

ors=OFF消息将不会输出到用户端(最终发布给用户时记得改成off)php中错误消息处理在php中,对于错误处理非常的宽松。php系统会尽量让程序运行下去,除非遇到致命错误。再次提示:如果不想显示错误信息给用户看到,设置php.ini中display_errors=

OFFphp代码中调整错误级别除了在php.ini文件中可以调整错误消息的显示级别外,在php代码中也可以自定义消息显示的级别。PHP提供了一个方便的调整函数。interror_reporting([intl

evel])使用这个函数可以定义当前php页面中错误消息的显示级别。参数level使用了二进制掩码组合的方式。自定义错误处理在php中,可以自定义对错误处理的方式。首先要自定义一个错误处理函数,然后使用set_error_handler()函数向系统声明错

误处理函数。代码中产生的错误就会使用这个错误处理函数了。使用trigger_error()函数,可以触发一个error。例如trigger_error("ageyouinputmust>=0",E_USER_ERROR),触发自己的错误信息。<?phpfunctionmyErrorHa

ndler($errno,$errstr,$errfile,$errline){switch($errno){caseE_USER_ERROR:echo"<b>MyERROR</b>[$errno]$errstr<br/>\n";echo"Fatalerrorinline$errli

neoffile$errfile";echo",PHP".PHP_VERSION."(".PHP_OS.")<br/>\n";echo"Aborting...<br/>\n";exit(1);break;caseE_USER_WARNING:ech

o"<b>MyWARNING</b>[$errno]$errstr<br/>\n";break;caseE_USER_NOTICE:echo"<b>MyNOTICE</b>[$errno]$errstr<br/>\n";break;default:echo"Unknowne

rrortype:[$errno]$errstr<br/>\n";break;}}set_error_handler("myErrorHandler");//定义错误处理函数.$age=-100;//假设出现了负数的年龄,这明显是错误的。if($ag

e<0){trigger_error(“ageyouinputmust>=0”,E_USER_ERROR);//触发错误;}?>PHP5中的SPL模块在PHP5中有一个独特的部分SPL-StandardPHPLibraryModules(PHP标

准库)。在SPL文档中这样说明的:SPL–PHP标准库是用来解决标准问题并实现一些高效数据访问的接口和类的集合。你会发现这些类用PHP代码编写在sql.php文件中,或在对应例子、内核的.inc文件中。基于这些内核的实现或在示例目录下的,也是一些.php文件。spl.php中的异常处

理类从PHP5.0开始,在SPL中引入了异常处理类。Notice:异常与错误在PHP中是两个完全不同的概念。在PHP源码包中能找到这个文件spl.php,在spl.php中定义了一个异常类Exception。在这个类中

,定义了一些属性如下:protected$message;存储异常信息的变量。private$string;格式化过以后的异常信息。protected$code;通过构造函数传递的异常代码。protected$fil

e;产生异常的php文件的文件名。protected$line;引起异常的代码在php文件中所在的行数。private$trace;引起异常后,包含相关信息的一个数组。构造函数如下:function__construct($message=NULL,$c

ode=0){if(func_num_args()){//func_num_args()返回参数数量$this->message=$message;}$this->code=$code;//错误代码默认是0;$this->file=__FILE__;//文件名$t

his->line=__LINE__;//行号$this->trace=debug_backtrace();//返回一个包含多个元素$this->string=StringFormat($this);//格式化字符串}其中还包含了__clone(

)方法和对应这些属性的geter方法。spl.php中的其它异常类在SPL中还定义了其它的异常类,以对应不同的异常类型。这些异常类都是Exception类的子类。在Exception类有两个直接子类LogicException和RuntimeException,分别表示逻辑异常和

执行异常。LogicException又衍生出其它的逻辑异常子类。classLogicExceptionextendsException程序中的逻辑错误的异常类,它是Exception类的直接子类。classBadFunctionCallExceptionextendsLogic

Exception当不合法的函数被调用产生的异常类。classBadMethodCallExceptionextendsBadFunctionCallException当不合法的方法被调用产生的异常类。classD

omainExceptionextendsLogicException表示一个值不在有效范围内的异常。classInvalidArgumentExceptionextendsLogicException

表示传递了无效的参数产生的异常。classLengthExceptionextendsLogicException表示一个参数超过了许可的长度的异常。classOutOfRangeExcepti

onextendsLogicException表示请求检索超越了数组等容器最大长度的异常。RuntimeException衍生出其它运行异常子类classRuntimeExceptionextendsExcept

ion只有在执行时才能发现的异常,是Exception的直接子类。classOutOfBoundsExceptionextendsRuntimeException表示请求检索超越了数组等容器最大长度的异常。classOverflowExceptionextendsRuntim

eException表示算法/缓存溢出异常classRangeExceptionextendsRuntimeException运行期间的范围异常classUnderflowExceptionextendsR

untimeException运行期间的算法/缓存的向下溢出异常。在spl.php中所有Exception子类的代码都仅仅是类的定义和简单的父类继承。而方法内部没有任何扩展、重写。如:LogicException的定义。又如:Leng

thException的定义部分PHP5异常捕获异常实例可以通过实例化Exception类或者它的子类来创建一个异常实例。有了这个异常实例,就可以通过Exception中定义好的getter方法,获得相应的属性值。<?$exception=newException("

HeresomeException");echo"<br/>..................................<br/>";echo$exception;echo"<br/>..........

........................<br/>";echo"getCode()=".$exception->getCode()."<br>/";echo"getFile()=".$exception->getFile()."<br>/";ec

ho"getLine()=".$exception->getLine()."<br>/";echo"getMessage()=".$exception->getMessage()."<br>/";echo"getTrace()=".$exception

->getTrace()."<br>/";echo"getTraceAsString()=".$exception->getTraceAsString()."<br>/";?><?$exception=newRuntimeExcepti

on("HeresomeRuntimeException");echo"<br/>..................................<br/>";echo$exception;echo"<br/>...........................

.......<br/>";echo"getCode()=".$exception->getCode()."<br>/";echo"getFile()=".$exception->getFile()."<br>/";echo"getLine()=".$e

xception->getLine()."<br>/";echo"getMessage()=".$exception->getMessage()."<br>/";echo"getTrace()=".$exception->getTrace()."<br>/";echo"getTrac

eAsString()=".$exception->getTraceAsString()."<br>/";?>抛出异常在PHP5中使用throw关键字,向外抛出一个异常实例。如果这个异常如果未经处理,将会导致系统产生致命错误,而使代码终止。<?$

exception=newException("heresomeexception");throw$exception;?>根据需求,我们可以向系统抛出不同的异常。在php中数组越界是不会产生知名错误的,而下面的代码抛出一个数组越界的

异常,导致代码运行终止。<?$arr=array(1,2,3);//创建一个数组。$b=5;//假设要取数组中的第五个值。if(5>count($arr)){$exception=newOutOfBoundsException("array\$arrOutOfBou

ndsException");}throw$exception;?>在代码中捕获异常可以通过PHP5支持的trycatch语句捕获并处理异常。语法如下:try{//可能引发异常的语句}catch(异常类型异常实例){/

/异常处理语句}在try块中,放置可能产生异常的代码片段。在catch块中放置对这个异常处理的代码。如:try{thrownewException(“newException”);//引发抛出异常}catch(

Exception$ex){echo$ex;//打印这个异常对象}如果try块未产生任何异常,try块将运行完毕,catch块内容不会被执行。try块如果抛出了异常,会立刻在catch中寻找可以捕获改

异常的catch块,并运行相应的catch块代码,然后跳出trycatch块继续运行。而try块中抛出异常后面的代码将被跳过。如果try块中的异常不能被catch块捕获,将抛向系统引发系统致命错误,代码终止运行。在catch中,异常类型后面跟的是一个变量,这个变量将指向

内存中被捕获的异常实例。未使用异常处理时,我们从一个数组中取值,如果数组越界,PHP只会报出一个错误Notice,我们无法对这些错误做任何的处理。在下面例子中,取值超过了数组边界,于是引发了自定义异常。在catch块做了处理。<?$de

bug=true;//是否开启调试功能try{$arr=array(1,2,3);//创建一个数组。$b=5;//假设要取数组中的游标5位置值。if($b>sizeof($arr)){thrownewOutOfBoundsEx

ception("数组\$arr取值越界异常.");}$a=$arr[$b];//如果没有异常就取出值}catch(OutOfBoundsException$ex){if($debug){echo"在第".$ex->

getLine()."行,产生异常,";echo$ex->getMessage()."<br>";echo"数组长度是".sizeof($arr)."不能取到位置$b.";}$a=0;//如果产生异常将0

赋值给$a}echo"<br/>\$a=$a";?>大家注意到catch(Exception$ex)中Exception这个类名,下面解释它的具体意义。在catch块中能捕获在catch()块中声明的捕获的异常

和其子类类型实例。下面的例子,抛出一个OutOfBoundsException的异常,而catch语句捕获DomainException异常。这个异常不会被catch语句捕获,而直接抛向了系统,引发了一个致命错误,程序被终止了。<?$debu

g=true;//是否开启调试功能try{$arr=array(1,2,3);//创建一个数组。$b=15;//游标15位置值。if($b>sizeof($arr)){thrownewOutOfBoundsException("数组\$arr取值越界异常.");}$a=$ar

r[$b];//如果没有异常就取出值}catch(DomainException$ex){if($debug){echo"在第".$ex->getLine()."行,产生异常,";echo$ex->getMessage()."<br>";

echo"数组长度是".sizeof($arr)."不能取到位置$b.";}$a=0;//如果产生异常将0赋值给$a}echo"<br/>\$a=$a";?>在catch块中能捕获catch()块里声明的异常的子类异常。一个catch块处理多

种异常􀁺在catch块中能捕获在catch()块中声明的捕获的异常和其子类类型实例。<?$debug=true;//是否开启调试功能$arr=array(1,2,3);//创建一个数组。$b=1;//游标15位置值。try{if($b>sizeof($arr)){

thrownewOutOfBoundsException("数组\$arr取值越界异常.");}$a=$arr[$b];//如果没有异常就取出值if(true){thrownewRuntimeException("这里产生一个Runti

me异常");//如果9行无异常,这里抛出异常.}}catch(RuntimeException$ex){if($debug){echo"在第".$ex->getLine()."行,产生异常,";echo$ex->getMessage()."<br>"

;}$a=0;//如果产生异常将0赋值给$a}echo"<br/>\$a=$a";?>多个catch块处理异常一个try块可以跟随多个catch块,每个catch块捕获不同的异常。下面例子的第7行,使用rand函数产生了一个0或1的随机数,反复运行这个代码会随机抛出逻辑

异常或执行异常。在try块后,有两个catch块,分别捕获并处理对应的异常,注意查看不同。<?$debug=true;//是否开启调试功能try{if(rand(0,1)){//产生随机0或1thrownewLogicExc

eption(“”);//抛出逻辑异常}else{thrownewRuntimeException("");//抛出执行异常.}}catch(LogicException$ex){if($debug){echo"在第".$ex->getLine()."行,产生逻辑异常,";ech

o$ex->getMessage()."<br>";}}catch(RuntimeException$ex){if($debug){echo"在第".$ex->getLine()."行,产生运行异常,";echo$e

x->getMessage()."<br>";}}?>异常处理块嵌套异常处理块只能处理自己catch块中的异常,已经处理过的异常将不会向外抛出。异常向外抛出异常向外抛出代码中一旦throw一个异常实例,系统会寻找能够处理这个异常的trycat

ch块,如果当前方法不能够处理这个异常,就会向外抛出。抛向调用这个方法的代码,一直向外抛出,如果抛到最外层都无法处理这个异常,会引发致命错误,代码终止。我们可以在方法引用的任何一个环节,根据业务需求决定捕获异常的位置。PHP5自定义异常异常处

理实例本例将写用户名和密码长度验证并对用户名和密码设定为只能是字符,配合正则表达式完成。设定用户名和密码长度必须在3-8个之间,并且只能是字符与数字User.php实现功能:􀁺定义User接口。􀁺实现存放用户信息的类。􀁺通过工厂模式

返回用户类实例定义一些参数的类,Properties.php在这个类中集中定义了一些参数,方便进行后期一些与程序逻辑关系不大的维护。自定义类,MyException.php自定义了用户名和密码两个独立的异常类,以及其它子类。验证用户名和密码长度合法性的类Validate.php在val

idateName方法和validatePassword两个方法中,分别对长度做了判断和验证。并通过正则表达式,对用户输入的合法性做了验证。虽然可以通过正则表达式一次验证用户字符合法性和长度,本例没有这样写是为了向方法外抛出长度不同的异常,

以及显示给用户的信息。登录页面login.php。登录会提交给loginvalidate.php这段代码相当于MVC中的controller控制器。登录成功页面,loginSuccess.php显示用户登录信息,判断se

ssion。

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?