主要包括php的錯誤、異常處理和除錯。具體如下:
1>256
<?php7/*
8* php的錯誤、異常處理和除錯9*/
1011
/*12
* 常見的錯誤型別:
13* ① 語法錯誤
14* ② 邏輯錯誤
15* ③ 未定義錯誤
16* ④ 環境錯誤
17* ⑤ 執行錯誤
18*/
1920
/*21
* 錯誤處理函式
22* 在php中,可以使用trigger_error()函式來出發自定義的錯誤資訊函式
23* bool trigger_error(sring $error_msg [, int $error_type])
24* error_msg是自定義錯誤提示資訊;error_type是自定義錯誤型別,值為錯誤
25級別中的常量,預設值為e_user_notice。
26*/
27$divisor=0;
28$divided=10;
29if($divisor!=0)else
3435
/*36
* 自定義錯誤頁面
37* 可以使用header()函式或include()函式來進一步實現錯誤頁面的頁面跳轉或引用
38*/
39$divisor=0;
40$divided=10;
41if($divisor!=0)else
4647
/*48
* include()函式之再學習
49* include語句包含並執行指定檔案。
50* include和require基本完全相同,除了返回的錯誤型別。
51在檔案未找到時include會發出一條警告;而require會發出乙個致命的錯誤
52* 當乙個檔案被包含時,其中所包含的**繼承了 include 所在行的變數範圍。
53從該處開始,呼叫檔案在該行處可用的任何變數在被呼叫的檔案中也都可用。
54不過所有在包含檔案中定義的函式和類都具有全域性作用域。
55* 例1:基本的include例子
56vars.php
57<?php
58$color = 'green';
5960
?>
61test.php
62<?php
63echo "a $color $fruit"; // a
64include 'vars.php';
6566
?>
67* 例2:函式中的包含
68如果 include 出現於呼叫檔案中的乙個函式裡,
69則被呼叫的檔案中所包含的所有**將表現得如同它們是在該函式內部定義的一樣。
70所以它將遵循該函式的變數範圍。此規則的乙個例外是魔術常量,它們是在發生包含之前就已被解析器處理的。
71<?php
72function foo()
7778
echo "a $color $fruit"; // a green
79?>
80*/
8182
/*83
* 錯誤日誌
84* (1)初始化php日誌工具
85有些常量是使用openlog(),closelog()和syslog()函式時所必須的,其形式為:
86void define_syslog_variables(void)
87使用日誌函式之前需要先執行此函式、
88* (2)開啟日誌連線
89bool openlog ( string $ident , int $option , int $facility )
90ident為增加到每一項的訊息標示符
91option確定生成訊息時使用了哪些日誌選項
92facility指明記錄日誌的程式的型別。
93* (3)關閉日誌連線
94int closelog(void);
95* (4)向日誌目標傳送訊息
96syslog()函式負責向syslog傳送一條定製資訊。其形式為:
97int syslog(int priority,string message);
98priority指定syslog優先順序,表示嚴重程度
99message指定要記錄的文字訊息
100* 例:
101define_syslog_variables();
102openlog("php5",log_pid,log_user);
103syslog(log_warning,"this is knife's blog!");
104closelog();
105以上**將在message_syslog檔案中生成類似下面的一條日誌:
106dec 5 20:43:06 php5[30326]:this is knife's blog!
107*/
108109
/*110
* php的基本異常類exception
111* exception類的構造方法需要傳入兩個引數:錯誤資訊和錯誤**
112* 除了構造方法,exception類還提供如下的內建方法:
113① getmessage():返回傳遞給建構函式的資訊
114② getcode():返回傳遞給建構函式的**
115③ getfile():返回產生宜昌**檔案的完整路徑
116④ getline():返回**檔案中產生**的行號
117⑤ gettrace():返回乙個包含產生異常**回退路徑的陣列
118⑥ gettraceasstring():返回乙個包含產生異常**回退路徑的陣列,該資訊降本格式化成乙個字串
119⑦ __tostring():顯示乙個exception物件,並且給出以上所有方法提供的資訊,可以過載。
120*/
121122
/*123
* try、throw和catch
124* try:使用的異常函式應該位於try**內
125* throw:規定如何觸發異常。每個throw必須至少對應乙個catch
126* catch**塊會捕獲異常,並建立愛你乙個包含異常資訊的物件
127*/
128129
/*130
* 建立自定義的exception類
131* 該類必須是exception類的乙個擴充套件
132*/
133134
/*135
* 設定頂層異常處理器
136* set_exception_handler()函式可設定處理所有未捕獲異常的使用者自定義函式
137* **如下:
138<?php
139function myexception($exception)
142set_exception_handler('myexception');
143throw new exception('uncaught exception occurred.');
144?>
145輸出:exception: uncaught exception occurred
146*/
147148
/*149
* 異常的規則
150*① 需要進行異常處理的**應該放在'try'**塊內,以便捕獲潛在的異常
151*② 每個try或throw**塊都必須至少擁有乙個對應的catcha**塊
152*③ 使用多個catch**塊可以捕獲不同種類的異常
153*④ 可以再try**塊內的catcha**塊中再次丟擲(re-thrown)異常
154*⑤ 如果丟擲了異常,就必須捕獲它
155*/
156 ?>
157158
php基礎學習
php預先定義了幾個常量,並提供了一種機制在執行時自己定義。常量和變數基本上是一樣的,不同的是 常量必須用define函式定義,常量一旦定義好,就不能被重新定義了。php中預先定義好的常量 file 當前正在處理的指令碼檔名。如果使用在乙個被包含的檔案中,那麼它的值就是這個被包含的檔案,而不是包含它...
php基礎學習
1 php的超級全域性變數 php提供了很多有用的預定義變數,可以在執行指令碼的任何位置訪問,用於提供與環境有關的大量資訊。globals 包含所執行指令碼全部可用的變數所組成的陣列,陣列的鍵即為變數的名稱。server 包含正在執行的指令碼的周邊環境資訊,例如伺服器的名稱和正在執行的頁面的名稱等。...
PHP學習基礎
筆記記錄一部分在w3school上學的,感覺會比較容易遺忘的。關聯陣列是使用您分配給陣列的指定鍵的陣列。有兩種建立關聯陣列的方法 age array peter 35 ben 37 joe 43 或者 age peter 35 age ben 37 age joe 43 隨後可以在指令碼中使用指定鍵...