FuelPHP 错误

 

FuelPHP 为处理错误和调试应用程序提供了极好的支持。本章让我们了解错误处理和调试。

 

Error Handling

FuelPHP 错误处理基于异常。 FuelPHP 为所有旧的 php 错误提供 PhpErrorException 异常。每当遇到 PHP 代码中的错误时,FuelPHP 都会引发 PhpErrorException。 FuelPHP 还可以轻松显示各种 HTTP 状态代码的自定义错误页面。

 

File Not Found Error

FuelPHP 提供了一个新的异常类 HttpNotFoundException 来处理未知请求。有时,我们可能会遇到可能无法处理的请求。那个时候,我们可以直接抛出HttpNotFoundException。

默认情况下,在路由配置文件fuel/app/config/routes.php中为HttpNotFoundException配置了一个默认页面,使用400个入口。每当引发 HttpNotFoundException 时,请求将被重定向到 400 页。

'_404_'   => 'welcome/404',    // The main 404 route 

 

Internal Errors

FuelPHP 提供了一个新的异常类 HttpServerErrorException 来处理所有服务器错误。有时,由于内部错误,我们可能无法处理给定的请求。那个时候,我们可以直接抛出HttpServerErrorException。

默认情况下,在路由配置文件 Fuel/app/config/routes.php 中使用 500 条目为 HttpServerErrorException 配置了一个默认页面。每当引发 HttpServerErrorException 时,请求将被重定向到 500 页。

'_500_'   => 'welcome/500',    // The main 500 route

此页面将记录错误,在页面中显示将格式化的错误并偶尔向系统管理员发送通知。

 

Access Violation Errors

FuelPHP 提供了一个新的异常类 HttpNoAccessException 来处理访问冲突。有时,由于访问限制,我们可能无法处理请求。那个时候,我们可以直接抛出HttpNoAccessException。

默认情况下,在路由配置文件 Fuel/app/config/routes.php 中使用 403 条目为 HttpNoAccessException 配置了默认页面。每当引发 HttpNoAccessException 时,请求将被重定向到 403 页面。

'_403_'   => 'welcome/403',     // The main 403 route 

此页面将显示访问违规信息。

 

Debugging

调试是开发应用程序最常见的活动之一。 FuelPHP 提供了一个简单的类 Debug 来处理应用程序的调试活动。让我们在本章中学习 Debug 类及其方法。

 

Debug Class

Debug 类提供实用方法来显示变量、对象、数组等的详细信息。Debug 类提供以下方法,

 

dump

dump 方法以格式化的结构化方式向浏览器返回多个混合值。

Debug::dump($var1, $var2);

 

backtrace()

backtrace 显示当前代码执行的详细信息。它显示了 PHP 文件信息、当前行以及它之前的所有操作。

Debug::backtrace();

 

classes()

返回所有类的列表。

Debug::classes(); 

 

interfaces()

返回所有接口类的列表。

Debug::interfaces(); 

 

includes()

返回当前在运行时加载的所有包含文件的列表。

Debug::includes();

 

functions()

返回所有函数的列表。

Debug::functions(); 

 

constants()

返回所有常量的列表。

Debug::constants();

 

extensions()

返回所有扩展的列表。

Debug::extensions();

 

headers()

返回所有 HTTP 标头的列表。

Debug::headers(); 

 

phpini()

打印从 php.ini 文件读取的配置设置列表。

Debug::phpini(); 

 单元测试是开发大型项目的必要过程。 单元测试有助于在开发的每个阶段自动测试应用程序的组件。当应用程序的组件没有根据项目的业务规范工作时,它会发出警报。单元测试可以手动完成,但通常是自动化的。  ...