动态网页技术PHP中错误处理的一些方法
先look here。:
error_reporting(1048);//1,2,4,7,...,1048
ob_start();
session_start();
date_default_timezone_set('Asia/Shanghai');
php的递给调用会吃掉很多的内存。
一般的,不要太多的使用define。
在类的构造和属性器方面,5已经做了很多的工作,克服的bug就不说了,__系列的函数都有一些看点,也是支持static的。
按照我现在的写过的程序,很少用到框架页面的,我感觉在php里面速度不在是一个问题。
注意类的调用次序,特别是已经extends的,准确的释放掉内存。
@mysql_fetch_array($result,MYSQL_ASSOC);
这个注意使用乱用,MYSQL_ASSOC,MYSQL_NUM 和 MYSQL_BOTH是一个enum吧。默认的是MYSQL_BOTH.
mysql的语句,如果执行in 的话不再支持limit。so...很麻烦。
支持distinct,group之,程序循环执行,md。
if(get_magic_quotes_gpc()){
$_GET= stripslashes_gpc($_GET);
$_POST= stripslashes_gpc($_POST);
$_COOKIE= stripslashes_gpc($_COOKIE);
}
set_magic_quotes_runtime(0);#magic_quotes_runtime
function stripslashes_gpc($array) {
while (list($key,$value) = each($array)) {
if (is_string($value)) {
$array[$key] = addslashes(stripslashes($value));
} else if (is_array($value)) {
$array[$key] = stripslashes_gpc($value);
}
}
return $array;
}
/**
* 处理程序中出现的错误
* @Date:2006-10-9-10:51
* @param (类型) (参数名) (描述)
*/
function Error_Handler($errno,$errstr,$errorfile,$errline,$errtext){
echo('系统发生错误:'.$errstr);
echo('At'.$errorfile.'的第'.$errline.'行.');
if($errno==E_USER_ERROR){
echo('致命错误,程序已经中止');
}
}
在使用的时候:
set_error_handler('Error_Handler');
trigger_error('call trigger_error',E_USER_ERROR);
这是使用函数获取的,当然您的错误报告级别应该高点:
error_reporting(1048);
为了更加oo,先看看一个描述类的自写的函数:
$classname='Exception';
/**
* (功能描述)
* @Date:
* @param (类型) (参数名) (描述)
*/
function ClassDetail($classname){
if(!class_exists($classname)){
echo($classname.'类不存在');
}else{
print_r("以下描述类".$classname);
print_r("所有的方法<pre>");
print_r(get_class_methods($classname));
print_r("</pre>");
print_r("<hr/>所有的属性<pre>");
print_r(get_class_vars($classname));
print_r("</pre><hr/>");
}
}
ClassDetail($classname);
发现exception类的所有get方法是:
[0] => __construct
[1] => getMessage
[2] => getCode
[3] => getFile
[4] => getLine
[5] => getTrace
[6] => getTraceAsString
[7] => __toString
慢慢的优化个性点,也可以的。