教程集 www.jiaochengji.com
教程集 >  脚本编程  >  php  >  正文 PHP MVC框架之错误捕捉入门教程

PHP MVC框架之错误捕捉入门教程

发布时间:2016-10-26   编辑:jiaochengji.com
教程集为您提供PHP MVC框架之错误捕捉入门教程等资源,欢迎您收藏本站,我们将为您提供最新的PHP MVC框架之错误捕捉入门教程资源
以前有讲过关于php mvc的各种用法,本文章主要介绍PHP MVC框架之错误捕捉用法说明,各位同学可参考。

前三篇文章已经把MVC的结构原理都简单的进行了说明和演示。。。当然,不是说一个框架就只有那点东西,一个良好的框架所要求的功能还是要很全面的,例如友好的错误输出,安全处理,防止跨域攻击等

好了,我们一步一步来。这节要说的是错误捕捉,其实这个不难,只要理解2个方法就可以做好错误捕捉的程序。

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy4100')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy4100>


register_shutdown_function(‘functionname’);  
set_error_handler(‘functionname’); 

第一个方法,是注册一个shutdown的回调函数,当php脚本关闭时调用,当然这个关闭可以是正常的代码执行完毕,也可以是程序抛出致命错误关闭的脚本,那我怎么区分呢?别急,php还有一个方法叫error_get_last() 就像函数名说的那样,获取php最后一个错误信息,这样就可以判断是代码正常执行完毕还是遇到fatal error。。。

第二个方法,是注册一个error的回调函数,当脚本执行遇到错误时调用。

这2个方法最大的区别是,第一个是脚本关闭调用,也就是1次访问,只会调用一次(因为发生致命错误脚本就退出执行了),二第二个方法的触发调用是发生错误的时候,例如访问数组中不存在的index,使用未定义的变量,就是这些warning,notice错误的捕捉。。。如果你想更了解二者的区别,建议访问php官网查看文档说明。。。

这里我就不贴代码了,有兴趣的同学,可以去github那里下回来慢慢看。。。

 

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy5472')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy5472>

<?php

# 定义application路径

define('APPPATH', trim(__DIR__,'/'));

# 获得请求地址

$root = $_SERVER['SCRIPT_NAME'];

$request = $_SERVER['REQUEST_URI'];

$URI = array();

# 获得index.php 后面的地址

$url = trim(str_replace($root, '', $request), '/');


# 如果为空,则是访问根地址

if (empty($url))

{

    # 默认控制器和默认方法

    $class = 'Index';

    $func = 'welcome';

}

else

{

    $URI = explode('/', $url);

 


    # 如果function为空 则默认访问index

    if (count($URI) < 2)

    {

        $class = ucfirst($URI[0]);

        $func = 'index';

    }

    else

    {

        $class = ucfirst($URI[0]);

        $func = $URI[1];

    }

}

 

# 把class加载进来

include(APPPATH . '/' . 'application/controllers/' . $class . '.php');

 


#实例化

$obj = new $class;

 


call_user_func_array(

    # 调用内部function

    array($obj,$func),

    # 传递参数

    array_slice($URI, 2)

);

 

 

我们来看看最终的效果。。。我们来试试访问不存在的controller里的方法试试

先看看没有错误捕捉的时候:

 

再来对比下做了错误捕捉的时候

您可能感兴趣的文章:
PHP MVC框架之错误捕捉入门教程
CodeIgniter3.0 框架自定义异常处理的方法介绍
系统化理解PHP中的错误和异常
MVC框架的理解
当下最主流开源PHP框架的综合性能盘点比较
Python新手常见问题三:在异常处理时错误的使用参数
Python2爬虫入门之如何学习爬虫
Django是什么?一文读懂Django框架
Phalcon框架安装与使用教程介绍
php主流框架有哪些?

[关闭]
~ ~