php错误机制_http状态码_序列化和反序列化

作者: 鲁智深 分类: PHP 发布时间: 2015-01-30 14:34

错误机制

有如下几种错误类型

1、deprecated

废弃函数,有新函数替代后报错;功能正常使用

2、notice

通知级别的错误,不中断代码执行

3、warning

警告级别的错误,不中断代码执行

4、error(中断代码执行)

①fatal error 致命错误

②parse error 语法错误

错误的捕获(有代码控制错误发送后的逻辑)

set_error_handler(“showError”,E_ALL);//showError发生错误是调用的函数

1
2
3
4
5
6
7
     echo "<br/>---------自定义报错信息逻辑-----------<br/>";
     set_error_handler("showError",E_ALL);
     function showError($errno,$errmesg,$errfile,$errline){
         echo $errno.$errmesg.$errfile.$errline;
     }
   
     echo $a;

trigger_error(“自定义错误信息”,错误级别);

1
2
     echo "<br/>---------创建报错信息-----------<br/>";
     trigger_error("我是错误信息",E_USER_WARNING);

error_reporting();//去除报错信息

1
2
     echo "<br/>---------去除报错信息-----------<br/>";
     error_reporting(E_ALL & ~E_DEDPECATED & ~E_NOTICE);

可以设置显示的错误级别

error_reporting(错误级别)

错误级别

①E_ALL//所有的错误和警告(不包括 E_STRICT)

②E_NOTICE//运行时提醒(这些经常是你代码中的bug引起的,也可能是有意的行为造成的。)

③E_ERROR//致命性的运行时错误

④E_PARSE//编译时解析错误

⑤E_USER_ERROR//用户自定义的错误消息

⑥E_USER_WARNING//用户自定义的警告消息

⑦E_USER_NOTICE//用户自定义的提醒消息

错误抑制符@

作用:把@加在错误产生的位置,就会把错误消息屏蔽了,效率不高

1
2
     echo "<br/>---------错误抑制符@-----------<br/>";
     @echo $a;

http状态码

状态码用于表示服务器对请求的处理结果,大致可以分为

100-199:表示成功接收请求,要求客户端继续提交下一个请求才能完成

200-299:成功接收请求,并且完成了整个处理过程

300-399:未完成请求,客户端进行下一步细化请求

1
2
3
4
5
6
7
     echo "<br/>----------跳转-----------<br/>";
     //header("Location:https://www.baidu.com/");
     //exit;//在每个重定向之后,都必须加上exit使代码退出
     
     echo "<br/>----------设置http状态码-----------<br/>";
     //header("HTTP/1.1 404 Not Found");
     //header("HTTP/1.1 200 OK");

常见的状态码:

404:访问的资源不存在

200:成功返回

304:资源本地有缓存,不再向服务器再次请求

302:服务器资源被转移,让客户端重新访问

500:服务器内部错误

序列化和反序列化

将数据转换成字符串,常用于数组或者对象序列化

serialize($arr);序列化数组

1
2
3
4
5
6
     echo "<br/>----------数组序列化----------<br/>";
     $arr = array("name"=>"lzs","age"=>18,"sex"=>"male");
     var_dump($arr);
     echo "<br/>";
     $str1 = serialize($arr);
     var_dump($str1);
1
2
3
4
5
6
7
8
9
10
11
12
     echo "<br/>----------对象序列化----------<br/>";
     class Man{
         public $name="lzs";
         public function getName(){
             echo $this->name;
         }
     }
     $zm = new Man;
     $zm->getName();
     echo "<br/>";
     $str2 = serialize($zm);
     var_dump($str2);

unserialize();将被序列化的字符串,进行转成原数据类型

1
2
3
4
5
6
7
     echo "<br/>----------反序列化数组----------<br/>";
     $str3 = unserialize($str1);
     var_dump($str3);
     
     echo "<br/>----------反序列化对象----------<br/>";
     $str4 = unserialize($str2);
     var_dump($str4);

将数据转成字符串json格式

json_encode($arr):把数组转成json格式字符串

1
2
3
     echo "<br/>----------json格式数据编码----------<br/>";
     $str5 = json_encode($arr);
     var_dump($str5);

json_decode($json,true):把json格式字符串,转成数组加第二个参数

1
2
     echo "<br/>----------json格式数据解码----------<br/>";
     var_dump(json_decode($str5,true));

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注