知識點:
1-文件加載
2-錯誤處理
1) 4個文件加載語句:include, require, include_once, require_once
2) 使用形式相同。include “要加載的文件完整路徑”; 或 include(“要加載的文件完整路徑”);
如: include d:/index.php
3) 可以載入的文件: php 或 html文件
路徑1) 相對路徑: 相對于當前網頁文件所在的位置來定位某個被加載的文件位置
./ : 表示當前位置,即當前網頁文件所在的位置(目錄);
../ : 表示上一級位置,即當前網頁文件所在的位置的上一級位置(目錄);
2)絕對路徑
本地絕對路徑; 如: include d:/demo/index.php
網絡絕對路徑; 如: include http://www.baidu.com/demo/index.php
3) 不寫路徑,直接文件名
實質是加載當前目錄下的指定文件名
如: include index.php //PHP語言引擎會在當前網頁目錄下找該文件
文件載入執行過程step 1: 從include|require 語句處退出PHP腳本模式(進入html代碼模式)step 2:載入include|require 語句所設定的文件中的代碼,并執行step 3:退出html模式重新進入php腳本模式,繼續之后的代碼include,include_once, require,require_once的區別
1) include 與 require 的區別, 或 include_once與require_once的區別
include或include_once 載入文件失敗時(即沒有找到該文件),報“提示錯誤“,然后繼續執行后續代碼;
require 或 require_once載入文件失敗時,報錯并立即終止執行。
一般,require用于在程序中,后續的代碼依賴于載入的文件的時候。
2) inlcude 與 include_once, 或require與require_once的區別
include 或 require載入的文件不判斷是否重復,只要有include或 require語句,就會載入一次---即可能重復載入。
include_once或require_once載入的文件會有內部判斷機制是否“前面代碼“已經載入過,如果載入過,就不再載入。
如: 如網頁中常見兩邊有相同的廣告,就是用include
1) include,require,include_once,require_once載入語句,如果載入成功返回1,載入失敗返回false
2) 如果被載入的文件中有return, 則在該return后的該文件內容不被載入 --終止載入
可以用于: 被載入文件給載入文件返回一個數據
錯誤處理 錯誤分類1) 語法錯誤
如果語法有錯誤,就會立即報錯,并且不會去執行程序
2) 運行時錯誤
在程序語法檢查通過后,開始運行程序,并在此過程中遇到的錯誤
常見3類錯誤: 提示性錯誤,警告性錯誤,致命錯誤
3) 邏輯錯誤
程序本身可以正常執行,沒有報錯。但并不是想要的結果。
錯誤分級1) 技術層面的錯誤分級: PHP語言中,將各種錯誤進行了不同級別的分類歸納
每一級別的錯誤,都有一個“代號”,這個代號是系統內部的一個“常量”
2)系統常見錯誤
E_ERROR: 致命錯誤
E_WARNING: 警告性錯誤
E_NOTICE: 提示性錯誤
3) 用戶自定義錯誤
E_USER_ERROR: 自定義致命錯誤
E_USER_WARNING: 自定義警告性錯誤
E_USER_NOTICE: 自定義提示性錯誤
4) 其他
E_STRICT: 嚴謹性語法檢查錯誤
E_ALL: 代表所有錯誤
詳細參考手冊: 函數參考》影響PHP行為的擴展》錯誤處理和日志記錄》預定義常量
1 ?php 2 function getBinStr($e) { 3 $s = decbin($e); //這是一個二進制數字字符串 4 /* 5 str_pad($str1,長度n,$str2,位置w)函數: 6 將字符串$str1,用字符串$str2填充到指定的長度n, 7 可以指定填充的位置w,左邊填充還是右邊填充 8 */ 9 $s1 = str_pad($s,16, 0 ,STR_PAD_LEFT); 10 return $s1; 11 } 12 echo pre 13 echo E_EEROR = .E_ERROR . /t/t其對應二進制值為: . getBinStr(E_ERROR); //1 14 echo br / E_WARNING = .E_WARNING. /t/t其對應二進制值為: . getBinStr(E_WARNING); //2 15 echo br / E_NOTICE = .E_NOTICE. /t/t其對應二進制值為: . getBinStr(E_NOTICE); //8 16 echo br / E_USER_NOTICE = .E_USER_NOTICE. /t/t其對應二進制值為: . getBinStr(E_USER_NOTICE); //1024 17 echo br / E_ALL = .E_ALL. /t/t其對應二進制值為: . getBinStr(E_ALL); //32767 18 echo /pre 19 ?
查看錯誤分級對應的二進制數測試
錯誤觸發1) 方式1: 系統觸發
典型錯誤3種:
E_NOTICE: 提示性錯誤: 會輸出錯誤提示,并繼續執行后續代碼;如:使用不存在的變量或常量
E_WARNING: 警告性錯誤: 會輸出錯誤提示,并繼續執行后續代碼; 如: include載入一個不存在的文件:
E_ERROR: 致命錯誤: 導致程序無法執行后續語句; 如: 一個不存在的函數??!
2) 方式2: 自定義觸發
1) 概念: 當處理某些數據時,數據本身沒有錯誤,但根據具體應用(業務)的需要,會要求數據滿足某種條件,而該數據并不滿足的時候,可以在程序中“主動”去觸發(創建)一個錯誤,以表明該數據的“非法性”。
2) 語法形式: trigger_error(“錯誤提示信息內容”,3種用戶錯誤代號之一);
如果觸發了用戶的致命錯誤(E_USER_ERROR),會終止程序的后續執行
錯誤報告的顯示1) 錯誤報告: 顯示在網頁上的錯誤提示內容
2) 是否顯示錯誤報告 ? display_errors
方式1:全局設置
修改配置文件php.ini 的配置項 display_errors = On; //表示顯示 如果是Off表示關閉
方式2: 局部設置
在php腳本文件中使用函數ini_set()來對它進行設置; 如 ini_set( display_errors ,0); //不顯示錯誤報告
該方式設置要優先于全局設置
3) 顯示哪些級別的錯誤報告? error_reporting
前提: display_errorrs=On;
方式1: 全局設置
修改配置文件php.ini 的配置項error_reporting, 如 : error_reporting = E_NOTICE | E_WARNING | E_ERROR
方式2: 局部設置
在php腳本文件中使用函數ini_set()來對它進行設置 , 如init_set(“error_reporting”,E_NOTICE | E_WARNING | E_ERROR),
錯誤日志的記錄1)是否記錄錯誤日志? log_errors
方式1: 全局設置
修改配置文件php.ini 的配置項log_errors, 如 : log_errors= On; //記錄錯誤日志
方式2: 局部設置
在php腳本文件中使用函數ini_set()來對它進行設置 , 如init_set(“log_errors”,1);//記錄錯誤日志
獲取php.ini配置項: ini_get( 配置項 ); //獲取php.ini的指定配置項值
2)記錄到哪里? error_log
可以指定位置或記錄到系統日志中
指定位置文件中:直接使用文件名,系統會自動在文件夾下都建立該文件名,并用其記錄該文件夾下的所有網頁文件發生的錯誤信息。
ini_set( error_log , myError.txt //如果有錯誤,將記錄在myError.txt文件中
寫入系統日志中: ini_set( error_log , syslog //所有錯誤日志記錄到系統 日志文件 中
自定義錯誤處理器1)錯誤處理器: 發生錯誤,用來處理該錯誤的一種方法。實質就是一個函數
2) 自定義錯誤處理器: 將原本有系統處理錯誤變為開發者自定義對錯誤顯示和記錄處理
3) 分2步:
step 1: 設定用于處理錯誤的函數 set_error_handler( 函數名 ); 如 set_error_handler( myError
step 2: 聲明定義處理錯誤的函數。 如 function myError($errCode, $errMsg, $errFile, $errLine) { //錯誤處理 }
1 ?php 2 //自定義錯誤處理器 3 //第一步: 設定要作為錯誤處理的函數名 4 set_error_handler( my_error_handler 6 //第2步: 定義函數 7 /** 8 * 自定義錯誤處理函數 9 * 該函數不要在程序中調用,一發生錯誤會被自動調用,而且會傳入該4個實參數據 10 * @param string $errCode 錯誤代號(級別) 11 * @param string $errMsg 錯誤信息的內容 12 * @param string $errFile 發生錯誤的文件名 13 * @param int $errLine 代表發生錯誤的行號 14 * @return void 15 */ 16 function my_error_handler($errCode,$errMsg,$errFile,$errLine) { 17 $str = 18 $str .= p b font color= red 錯誤: /font /b 19 $str .= br / 錯誤代號是: .$errCode; 20 $str .= br / 錯誤內容是: .$errMsg; 21 $str .= br / 錯誤文件是: .$errFile; 22 $str .= br / 錯誤行號是: .$errLine; 23 $str .= br / 發生的時間: .date( Y-m-d H:i:s 24 $str .= /p 25 echo $str; //輸出該“構建”的錯誤完整處理結果 26 //可以將該內容寫入到某個文件去,既記錄錯誤日志 27 } 29 //以下是錯誤代碼 30 echo br / aaaa 31 echo $v1; //使用不存在的變量 32 echo C1; // 使用不存在的常量 33 echo br / bbbb 34 echo hr /
點擊查看自定義錯誤處理器測試
以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !
相關推薦:
PHP基本語法的介紹
PHP的環境搭建 的方法
以上就是PHP文件加載和錯誤處理的介紹的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答