程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 學習動態網頁技術PHP中錯誤處理的一些方法

學習動態網頁技術PHP中錯誤處理的一些方法

編輯:關於PHP編程

已經玩php一段時間了,基本是from 0開始的,經常出現的問題也很多,慢慢的可以熟練的查詢文檔了,而且,經驗也不是很多。

  先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

慢慢的優化個性點,也可以的。



  ok,來看比較oo的處理方式:
class ErrorHandlers extends Exception{
    private $_context = null;
    function  __construct($level,  $string,  $file,  $line,  $context=null){  
        parent::__construct($string,$level);  
        $this->file  =  $file;    
        $this->line  =  $line;  
        $this->_level  =  $level;  
        $this->_context  =  $context;
    }
    function __destruct(){
//        parent::__destruct();
    }
    function Message(){
           $errors = array(
                      E_ERROR          => error,
                      E_WARNING        => warning,
                      E_PARSE          => parsing error,
                      E_NOTICE          => notice,
                      E_CORE_ERROR      => core error,
                      E_CORE_WARNING    => core warning,
                      E_COMPILE_ERROR  => compile error,
                      E_COMPILE_WARNING => compile warning,
                 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved