php基礎語法(文件加載和錯誤)
文件加載
有4個文件加載的語法形式(註意,不是函數):
include, include_once, require, require_once;
他們的本質是一樣的,都是用於加載/引入/包含/載入一個外部文件到當前php代碼中來。
他們只在2個方面有細微區別:
1,如果加載文件失敗,則有不同的處理規則;include和require不同
2,如果加載文件重復,則有不同的處理規則;XXX和XXX_once不同;
3,他們都是語法結構,而非函數,使用形式可以有兩種:
3.1 include ‘文件路徑’;
3.2 include (‘文件路徑’);
include_once 和include
require 和 include的區別:
如果被包含文件不存在,即引用失敗(出錯)時,include發出警告並繼續執行後續代碼,require直接終止。
錯誤處理
語法錯誤:
程序沒法運行,直接提示語法錯誤。
運行時錯誤:
只有程序運行到某行,或在某些特定的情形下運行才會發生的錯誤。
邏輯錯誤:
程序從頭到尾運行都沒有發生(並提示)錯誤,但程序運行計算的結果是錯誤的。
系統錯誤:
E_ERROR:系統嚴重錯誤
一發生,程序立即停止執行。
E_WARNING:系統警告
一發生,提示錯誤,並繼續執行。
E_PARSE:語法錯誤
一發生,提示錯誤,而且代碼完全不會運行
E_NOTICE:系統提示
一發生,提示錯誤,並繼續執行。
用戶自定義錯誤
只有3個:
E_USER_ERROR;
E_USER_WARNING;
E_USER_NOTICE;
就是由程序員通過程序代碼而“產生”一個錯誤。
語法:
trigger_error(“錯誤提示” , 用戶錯誤代號);
錯誤的顯示控制
網頁中顯示(提示)錯誤信息,是可以進行控制的,有2種途徑:
1,在php.ini文件中設定,對所有php程序都有效;
2,在當前腳本文件中,只對當前腳步文件有效。
錯誤的顯示有2個方面可以進行控制;
1,設定是否顯示:display_error:
php.ini中;display_error = On; //表示顯示, Off表示不顯示;
腳本中: ini_set(“display_error”, 1); //1表示顯示, 0表示不顯示,也可以用true,false
腳本中的設定優先級高。
2,設定顯示哪些級別的錯誤——依賴與第一項設定為顯示的情況。
php.ini文件中:
error_reporting = E_NOTICE; //只顯示E_NOTICE錯誤
error_reporting = E_NOTICE | E_WARNING; //顯示E_NOTICE和E_WARNING錯誤
error_reporting = E_NOTICE | E_WARNING | E_USER_ERROR;
//顯示E_NOTICE和E_WARNING和E_USER_ERROR錯誤
在代碼中設定:
ini_set(“error_reporting”, E_NOTICE); //只顯示E_NOTICE錯誤
ini_set(“error_reporting”, E_NOTICE | E_WARNING); ////顯示E_NOTICE和E_WARNING錯誤
ini_set(“error_reporting”, E_ALL | E_STRICT & ~E_NOTICE); //只關閉E_NOTICE錯誤
ini_set()含義可以設定幾乎所有php.ini中的設定項,形式如下:
ini_set(“設定項名稱” ,值); //這種設定都只對當前腳本有效,而且無需重啟apache,很方便。
另一個對應函數是:ini_get(“設定項名稱”);//用於獲取某項的值。
記錄錯誤日誌
在開發階段,我們通常都是顯示所有錯誤——意圖解決錯誤
在產品階段,我們通常都是隱藏所有錯誤——並同時將錯誤信息記錄到文件中——錯誤日誌文件。
我們可以自己查看錯誤日誌以解決開發階段沒有發現的錯誤問題。
記錄錯誤日誌同樣有2種途徑:
1,在Php.ini文件中設定:
log_errors = On; //用於設定是否記錄錯誤日誌,On記錄,Off不記錄
error_log = “錯誤日誌文件名”; //設定錯誤日誌的文件名
此時,該文件沒有給定路徑,則系統會在每個文件夾下建立該文件並記錄進去。
error_log還有一個特殊值可以使用:
error_log = syslog; //此時不會記錄錯誤日誌文件,而是把錯誤信息寫入到系統錯誤日誌中
php基礎語法(文件加載和錯誤)