筆記5-文件加載與錯(cuò)誤處理_第1頁(yè)
筆記5-文件加載與錯(cuò)誤處理_第2頁(yè)
筆記5-文件加載與錯(cuò)誤處理_第3頁(yè)
筆記5-文件加載與錯(cuò)誤處理_第4頁(yè)
筆記5-文件加載與錯(cuò)誤處理_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、昨日回顧2文件加載3綜述:3文件路徑問(wèn)題31, 相對(duì)路徑:32,絕對(duì)路徑:43,只有文件名(無(wú)路徑)4文件載入執(zhí)行過(guò)程5幾個(gè)區(qū)別:6return關(guān)鍵字7錯(cuò)誤處理8錯(cuò)誤的分類8錯(cuò)誤的分級(jí)9系統(tǒng)錯(cuò)誤:9用戶自定義錯(cuò)誤10其他:10錯(cuò)誤的觸發(fā)10正常觸發(fā):10人工觸發(fā)11錯(cuò)誤的顯示控制11記錄錯(cuò)誤日志12自定義錯(cuò)誤處理14昨日回顧位運(yùn)算:基本位運(yùn)算規(guī)則:按位與:1&1=1, 1&0=0; 0&1=0; 0&0=0按位或:1|1=1, 1|0=1; 0|1=1; 0|0=0按位非:1=0, 0=1按位異或:11=0, 10=1; 0&1=1; 00=0對(duì)常規(guī)整數(shù)的按位運(yùn)算:按位與:按位或,按位左移,按

2、位右移,按位非:按位異或:$v1 = 9;/00001001$v2 = 19;/00010011 00011010這是24 + 23 + 21 = 16+8 + 2 = 26原碼就是將一個(gè)數(shù)字通過(guò)數(shù)學(xué)方法轉(zhuǎn)換得到的二進(jìn)制形式。并規(guī)定:第一個(gè)位為符號(hào)位,0表示正數(shù),1表示負(fù)數(shù)。但是,在cpu內(nèi)部,計(jì)算都是以補(bǔ)碼的形式進(jìn)行。反碼:正數(shù)的反碼:是其本身;負(fù)數(shù)的反碼:符號(hào)位不變,其余每一位取反。補(bǔ)碼:正數(shù)的補(bǔ)碼:是其本身;負(fù)數(shù)的補(bǔ)碼:符號(hào)位不變,反碼加1。管理一組事物的開(kāi)關(guān)狀態(tài):有多個(gè)數(shù)據(jù),其都只有2個(gè)狀態(tài)(真,假,true,false.),并且可以將他們確定位置(順序) 那么,我們就可以用一個(gè)數(shù)字(

3、整數(shù))就可以實(shí)現(xiàn)著多個(gè)數(shù)據(jù)的“統(tǒng)一管理”首先,設(shè)定多個(gè)基礎(chǔ)數(shù)據(jù),通常用常量:D1 = 1;D2 = 2; D3=4;D4 = 8;D5 = 16;. 則:變量$state = 17;/一個(gè)隨便的數(shù)字,就可以代表著多個(gè)數(shù)據(jù)的任意可能的組合。常見(jiàn)需求就有3個(gè):1,確定某個(gè)數(shù)據(jù)的當(dāng)前值(狀態(tài)):if( $state & Dn 0)為真else為假;n代表任意某個(gè)數(shù)據(jù)2,設(shè)定某個(gè)數(shù)據(jù)為真:$state = $state | Dn;/n為1,2,3,。之一。3,設(shè)定某個(gè)數(shù)據(jù)為假:$state = $state & Dn;/n為1,2,3,。之一。循環(huán):3要素:循環(huán)變量初始化;循環(huán)變量的條件判斷;循環(huán)變量

4、值的改變;2中斷:break $n;/完全終止(退出)指定的第n層循環(huán),continue $n;/停止正在執(zhí)行的指定的第n層循環(huán),并從循環(huán)的起始位置“從新開(kāi)始”。文件加載綜述:有4個(gè)文件加載的語(yǔ)法形式(注意,不是函數(shù)):include, include_once, require, require_once;他們的本質(zhì)是一樣的,都是用于加載/引入/包含/載入一個(gè)外部文件到當(dāng)前php代碼中來(lái)。他們只在2個(gè)方面有細(xì)微區(qū)別:1,如果加載文件失敗,則有不同的處理規(guī)則;include和require不同2,如果加載文件重復(fù),則有不同的處理規(guī)則;XXX和XXX_once不同;3,他們都是語(yǔ)法結(jié)構(gòu),而非函數(shù)

5、,使用形式可以有兩種:3.1 include 文件路徑;3.2 include (文件路徑);文件路徑問(wèn)題不管是哪個(gè)載入語(yǔ)法結(jié)構(gòu),都涉及到文件路徑問(wèn)題。主要有3種情況:1, 相對(duì)路徑:就是以“./”, 或“./”,開(kāi)頭的路徑。./表示當(dāng)前網(wǎng)頁(yè)文件的所在位置(文件夾,目錄);./表示當(dāng)前網(wǎng)頁(yè)文件的所在位置的上一級(jí)位置(文件夾,目錄)這種相對(duì)位置對(duì)一個(gè)網(wǎng)站中的所有內(nèi)容(包括php,html,圖片,css,js文件)都有效。2,絕對(duì)路徑:有2種絕對(duì)路徑:本地絕對(duì)路徑:window系統(tǒng):c:/d1/d2/page3.phpunix系列系統(tǒng):/d1/d2/page3.php網(wǎng)絡(luò)絕對(duì)路徑:3,只有文件名(

6、無(wú)路徑)在php的include語(yǔ)法(其他3個(gè)也一樣)中,如果只給出文件名,而沒(méi)有給出路徑,則此時(shí)有其內(nèi)部找到該文件的規(guī)則,如下:1,首先在系統(tǒng)設(shè)置的include目錄中查找:在php.ini配置文件中,有:include_path設(shè)定:可見(jiàn)默認(rèn)無(wú)設(shè)定;該設(shè)定其實(shí)可以設(shè)定多個(gè)目錄,其間用分號(hào)分開(kāi);系統(tǒng)會(huì)按順序依次找要載入的文件。修改php.ini中的include_path為:我們也可以在腳本中設(shè)定:我們也可以使用另一個(gè)函數(shù)來(lái)獲取當(dāng)前的include_path的值:2,上面沒(méi)找到,在當(dāng)前執(zhí)行的網(wǎng)頁(yè)文件所在目錄(所謂當(dāng)前工作目錄)查找:所謂當(dāng)前網(wǎng)頁(yè)文件,就是地址欄中顯示的那個(gè)文件名。3,上面還沒(méi)

7、找到,則在當(dāng)前include命令所在文件的所在目錄中查找:如果一個(gè)文件(A)包含文件B,在文件B中又有include命令包含文件C,此時(shí)B中的路徑問(wèn)題就可能發(fā)生這種情況。文件載入執(zhí)行過(guò)程 從include語(yǔ)句處退出php腳本模式(進(jìn)入html代碼模式) 載入include語(yǔ)句所設(shè)定的文件中的代碼,并執(zhí)行之(如同在當(dāng)前文件中一樣) 退出html模式重新進(jìn)入php腳本模式,繼續(xù)之后的代碼舉例:4include_yuanli.php中:page3.php中:4include_yuanli.php中的代碼,相當(dāng)于:幾個(gè)區(qū)別: include_once 和include的區(qū)別:前者能夠保證不會(huì)被重復(fù)加載

8、 require 和 include的區(qū)別:o 如果被包含文件不,存在,即引用失?。ǔ鲥e(cuò))時(shí),include發(fā)出警告并繼續(xù)執(zhí)行后續(xù)代碼,require直接終止。 require_once 和 require的區(qū)別:前者能夠保證不會(huì)被重復(fù)加載return關(guān)鍵字以前,我們只在函數(shù)中出現(xiàn)return關(guān)鍵字,其作用是:結(jié)束函數(shù),并可以返回?cái)?shù)據(jù);return;/單純結(jié)束; return $x;/結(jié)束,并返回?cái)?shù)據(jù)$x;那么,被包含(載入)的文件中的return 關(guān)鍵字也具有同樣的作用!結(jié)果:再來(lái)看看return返回值的形式:結(jié)果為:錯(cuò)誤處理錯(cuò)誤的分類語(yǔ)法錯(cuò)誤:程序沒(méi)法運(yùn)行,直接提示語(yǔ)法錯(cuò)誤。運(yùn)行時(shí)錯(cuò)誤:只

9、有程序運(yùn)行到某行,或在某些特定的情形下運(yùn)行才會(huì)發(fā)生的錯(cuò)誤。邏輯錯(cuò)誤:程序從頭到尾運(yùn)行都沒(méi)有發(fā)生(并提示)錯(cuò)誤,但程序運(yùn)行計(jì)算的結(jié)果是錯(cuò)誤的。我們程序員主要面對(duì)的和要處理(應(yīng)付)的錯(cuò)誤,就是運(yùn)行時(shí)錯(cuò)誤。錯(cuò)誤的分級(jí)在php中,將各種錯(cuò)誤,分門別類,依據(jù)不同的嚴(yán)重程度和產(chǎn)生的來(lái)源(機(jī)制),將各種錯(cuò)誤分為大約10幾個(gè)級(jí)別。每個(gè)級(jí)別的錯(cuò)誤,都對(duì)應(yīng)一個(gè)內(nèi)部的名稱系統(tǒng)常量!系統(tǒng)錯(cuò)誤:E_ERROR:系統(tǒng)嚴(yán)重錯(cuò)誤一發(fā)生,程序立即停止執(zhí)行。該錯(cuò)誤一般希望馬上。E_WARNING:系統(tǒng)警告一發(fā)生,提示錯(cuò)誤,并繼續(xù)執(zhí)行。通常該錯(cuò)誤希望能夠在“下一工作日”去處理掉(解決)。E_PARSE:語(yǔ)法錯(cuò)誤一發(fā)生,提示錯(cuò)誤,而

10、且代碼完全不會(huì)運(yùn)行在運(yùn)行之前先檢查語(yǔ)法。E_NOTICE:系統(tǒng)提示一發(fā)生,提示錯(cuò)誤,并繼續(xù)執(zhí)行。發(fā)個(gè)郵件通知一下,自己安排時(shí)間有空去解決。他們的本質(zhì)是什么呢?可見(jiàn)他們只是一個(gè)系統(tǒng)內(nèi)部常量(整數(shù)常量);實(shí)際上,這些常量(代號(hào))是供我們對(duì)對(duì)該類錯(cuò)誤進(jìn)行“控制”的標(biāo)示符而已。用戶自定義錯(cuò)誤只有3個(gè):E_USER_ERROR;E_USER_WARNING;E_USER_NOTICE;我們可以在程序中,自己創(chuàng)建(生成)錯(cuò)誤是為了針對(duì)某些數(shù)據(jù)的不合理情形,而創(chuàng)建的錯(cuò)誤。比如:讓用戶填寫年齡, 填18是ok,但填寫188就是不合理從數(shù)字角度本身是沒(méi)有問(wèn)題。其他:E_ALL;代表所有錯(cuò)誤表示它可以“包括”錯(cuò)誤

11、。E_STRICT: 代表“嚴(yán)格性”語(yǔ)法檢查錯(cuò)誤某種語(yǔ)法是可以執(zhí)行的,但在當(dāng)前的php版本中是不歡迎使用。錯(cuò)誤的觸發(fā)正常觸發(fā):程序運(yùn)行時(shí)確實(shí)發(fā)生了運(yùn)行時(shí)錯(cuò)誤也可能是語(yǔ)法檢查錯(cuò)誤。3種常見(jiàn)的運(yùn)行時(shí)錯(cuò)誤:人工觸發(fā)就是由程序員通過(guò)程序代碼而“產(chǎn)生”一個(gè)錯(cuò)誤。語(yǔ)法:trigger_error(“錯(cuò)誤提示” , 用戶錯(cuò)誤代號(hào));應(yīng)用中,通常是需要檢測(cè)(判斷)數(shù)據(jù)的有效性,以決定是否觸發(fā)相應(yīng)錯(cuò)誤,比如:錯(cuò)誤的顯示控制網(wǎng)頁(yè)中顯示(提示)錯(cuò)誤信息,是可以進(jìn)行控制的,有種途徑:,在文件中設(shè)定,對(duì)所有程序都有效;,在當(dāng)前腳本文件中,只對(duì)當(dāng)前腳步文件有效。錯(cuò)誤的顯示有個(gè)方面可以進(jìn)行控制;,設(shè)定是否顯示:displa

12、y_error: php.ini中;display_error = On;/表示顯示, Off表示不顯示;(顯示)(不顯示)腳本中: ini_set(“display_error”, 1); /1表示顯示, 0表示不顯示,也可以用true,false腳本中的設(shè)定優(yōu)先級(jí)高。,設(shè)定顯示哪些級(jí)別的錯(cuò)誤依賴與第一項(xiàng)設(shè)定為顯示的情況。文件中:error_reporting = E_NOTICE;/只顯示E_NOTICE錯(cuò)誤error_reporting = E_NOTICE | E_WARNING;/顯示E_NOTICE和E_WARNING錯(cuò)誤error_reporting = E_NOTICE | E

13、_WARNING | E_USER_ERROR;/顯示E_NOTICE和E_WARNING和E_USER_ERROR錯(cuò)誤解釋上一行:E_NOTICE:00000000 00001000E_WARNING: 00000000 00000010E_USER_ERROR:00000001 00000000或運(yùn)算(|)00000001 00001010實(shí)際上,在開(kāi)發(fā)階段,常用的是:error_reporting = E_ALL | E_STRICT;它是這樣的結(jié)果:E_ALL01110111 11111111E_STRICT: 00001000 00000000或運(yùn)算(|)01111111 11111

14、111可見(jiàn),E_ALL并非真的表示“所有”,而是只有E_ALL | E_STRICT才真的表示所有。繼續(xù):如果在顯示“所有”錯(cuò)誤的基礎(chǔ)上,只想“關(guān)閉”個(gè)別少數(shù)錯(cuò)誤呢?跟狀態(tài)數(shù)據(jù)的設(shè)定(關(guān)閉)道理一樣,只要這么做:error_reporting = E_ALL | E_STRICT & E_NOTICE;/只關(guān)閉了E_NOTICE錯(cuò)誤提示error_reporting = E_ALL | E_STRICT & E_NOTICE & E_WARNING;/關(guān)閉了2個(gè)在代碼中設(shè)定:ini_set(“error_reporting”, E_NOTICE);/只顯示E_NOTICE錯(cuò)誤ini_set(“

15、error_reporting”, E_NOTICE | E_WARNING);/顯示E_NOTICE和E_WARNING錯(cuò)誤ini_set(“error_reporting”, E_ALL | E_STRICT & E_NOTICE);/只關(guān)閉E_NOTICE錯(cuò)誤ini_set()含義可以設(shè)定幾乎所有php.ini中的設(shè)定項(xiàng),形式如下:ini_set(“設(shè)定項(xiàng)名稱” ,值);/這種設(shè)定都只對(duì)當(dāng)前腳本有效,而且無(wú)需重啟apache,很方便。另一個(gè)對(duì)應(yīng)函數(shù)是:ini_get(“設(shè)定項(xiàng)名稱”);/用于獲取某項(xiàng)的值。記錄錯(cuò)誤日志在開(kāi)發(fā)階段,我們通常都是顯示所有錯(cuò)誤意圖解決錯(cuò)誤在產(chǎn)品階段,我們通常都是

16、隱藏所有錯(cuò)誤并同時(shí)將錯(cuò)誤信息記錄到文件中錯(cuò)誤日志文件。我們可以自己查看錯(cuò)誤日志以解決開(kāi)發(fā)階段沒(méi)有發(fā)現(xiàn)的錯(cuò)誤問(wèn)題。記錄錯(cuò)誤日志同樣有2種途徑:1,在Php.ini文件中設(shè)定:log_errors = On;/用于設(shè)定是否記錄錯(cuò)誤日志,On記錄,Off不記錄error_log = “錯(cuò)誤日志文件名”;/設(shè)定錯(cuò)誤日志的文件名此時(shí),該文件沒(méi)有給定路徑,則系統(tǒng)會(huì)在每個(gè)文件夾下建立該文件并記錄進(jìn)去??梢?jiàn),頁(yè)面中顯示的錯(cuò)誤提示內(nèi)容,和日志文件中記錄的錯(cuò)誤信息內(nèi)容,一樣。error_log還有一個(gè)特殊值可以使用: error_log = syslog;/此時(shí)不會(huì)記錄錯(cuò)誤日志文件,而是把錯(cuò)誤信息寫入到系統(tǒng)錯(cuò)誤日

17、志中則結(jié)果為:2,在當(dāng)前腳本文件中:ini_set(“l(fā)og_errors” , On);/或者Offini_set(“error_log”, err1.log);/后綴隨便用ini_set(“error_log”, err2.txt);ini_set(“error_log”, err3.html);int_set(“error_log”, syslog);/記錄到操作系統(tǒng)日志中。自定義錯(cuò)誤處理以上的錯(cuò)誤處理,不管是顯示錯(cuò)誤,還是記錄錯(cuò)誤日志,都是php語(yǔ)言內(nèi)部實(shí)現(xiàn)的。我們只是幾個(gè)簡(jiǎn)單的設(shè)定是否顯示或是否記錄或顯示哪些,或記錄到哪里。則:自定義錯(cuò)誤處理,就可以讓我們自己完全控制錯(cuò)誤的提示內(nèi)容!做法非常簡(jiǎn)單:1,設(shè)定要用來(lái)進(jìn)行自定義處理錯(cuò)誤的自定義函數(shù)名;2,自

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論