php 基礎學習5

2021-09-06 14:33:53 字數 3924 閱讀 4663

主要包括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 隨後可以在指令碼中使用指定鍵...