




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
主要內(nèi)容第I篇項(xiàng)目準(zhǔn)備第1章運(yùn)行環(huán)境第2章前端技術(shù)第3章后端技術(shù)第4章PHP框架本教材分為兩部分,共10章。第II篇項(xiàng)目案例第5章內(nèi)容管理系統(tǒng)第6章日程管理系統(tǒng)第7章在線課程系統(tǒng)第8章校園信息平臺(tái)第9章電子商務(wù)系統(tǒng)第10章在線辦公系統(tǒng)主要內(nèi)容第3章后端技術(shù)3.1PHP語言基礎(chǔ)3.2面向過程編程3.3面向?qū)ο缶幊?.4PHP擴(kuò)展與應(yīng)用庫3.1PHP語言基礎(chǔ)1、語法基礎(chǔ)PHP是一種嵌入式的程序設(shè)計(jì)語言,其代碼的編寫,除需要特定的語言標(biāo)記之外,其他語法與C、C++、Java等程序設(shè)計(jì)語言基本相同。語言標(biāo)記與注釋標(biāo)記:<?php…?>、<?…?>或<?=…?>注釋://…、#…、/*…*/
PHP基礎(chǔ)標(biāo)識(shí)符與關(guān)鍵字標(biāo)識(shí)符:在程序設(shè)計(jì)過程中,經(jīng)常需要定義一些符號(hào)來標(biāo)記一些名稱,例如變量名、函數(shù)名、類名等,這些符號(hào)即為標(biāo)識(shí)符PHP中的標(biāo)識(shí)符必須滿足以下規(guī)定:(1)標(biāo)識(shí)符只能由字母、數(shù)字和下劃線組成;(2)標(biāo)識(shí)符可以由一個(gè)或多個(gè)字符組成,且必須以字母或下劃線開頭;(3)當(dāng)標(biāo)識(shí)符用作變量名時(shí),區(qū)分大小寫;(4)標(biāo)識(shí)符可以是任意長度;(5)標(biāo)識(shí)符不能與PHP預(yù)定義關(guān)鍵字相同。PHP基礎(chǔ)關(guān)鍵字:PHP的關(guān)鍵字,是預(yù)先定義好、并賦予了特殊含義的單詞,也稱為保留字,包括關(guān)鍵詞、預(yù)定義類、預(yù)定義常量,以及其他保留字。與C、C++、Java等語言不同,在PHP中,變量名是可以使用其關(guān)鍵字的。例如:<?php$if=‘if’?>但建議大家最好不要這樣做,以避免產(chǎn)生不必要的麻煩。PHP基礎(chǔ)變量與常量變量是可以在不同時(shí)刻存儲(chǔ)不同數(shù)據(jù)的符號(hào),它實(shí)際上表示了某個(gè)內(nèi)存單元。PHP的變量由“$”符號(hào)和變量名組成。例如:$str=“php”;在PHP中,變量名大小寫敏感。PHP中的可變變量,其變量名可以變化。例如:$str=“php”;$$str=“PHP”;PHP基礎(chǔ)常量用于存儲(chǔ)在程序運(yùn)行過程中始終保持不變的數(shù)據(jù)。PHP中的常量,通常使用函數(shù)define()或關(guān)鍵字const來定義。例如:define(‘PI’,3.1416);constPAI=3.1415;常量一旦被定義,就不能再修改它的值,也不能重新定義。PHP基礎(chǔ)數(shù)據(jù)類型數(shù)據(jù)類型是具有一組相同屬性的數(shù)據(jù)的統(tǒng)稱。PHP支持3大類的數(shù)據(jù)類型,分別為標(biāo)量數(shù)據(jù)類型、復(fù)合數(shù)據(jù)類型和特殊數(shù)據(jù)類型。標(biāo)量數(shù)據(jù)類型PHP的標(biāo)量數(shù)據(jù)類型包括4種,分別是Boolean(布爾型)、integer(整型)、float(浮點(diǎn)型,也稱作double)和string(字符串型)。PHP基礎(chǔ)復(fù)合數(shù)據(jù)類型PHP的復(fù)合數(shù)據(jù)類型包括3種,分別是array(數(shù)組)、object(對(duì)象)和callable(可調(diào)用)。特殊數(shù)據(jù)類型PHP的特殊數(shù)據(jù)類型包括2種,分別是resource(資源)和NULL(空或不存在)。例如:$file=fopen(‘doc.txt’,’r’);//資源類型$name=NULL;//NULL類型PHP基礎(chǔ)運(yùn)算符PHP的運(yùn)算符分為算術(shù)運(yùn)算符、字符串連接運(yùn)算符、賦值運(yùn)算符、比較運(yùn)算符、邏輯運(yùn)算符、條件運(yùn)算符、自增自減運(yùn)算符、位運(yùn)算符,以及錯(cuò)誤抑制運(yùn)算符等。算術(shù)運(yùn)算符PHP的算術(shù)運(yùn)算符有7種,分別是-(取負(fù))、+(加法)、-(減法)、*(乘法)、/(除法)、%(取模)、**(乘方)。PHP基礎(chǔ)字符串連接運(yùn)算符在PHP中,使用字符串連接運(yùn)算符(.)將兩個(gè)字符串拼接成一個(gè)字符串。例如:$str1=‘Hello’;$str2=‘PHP’;$str=$str1.$str2;賦值運(yùn)算符PHP中的賦值運(yùn)算符,包括基本賦值運(yùn)算符(=)和復(fù)合賦值運(yùn)算符(如+=等)。復(fù)合賦值運(yùn)算符也稱為組合運(yùn)算符,適合所有的二元運(yùn)算符。PHP基礎(chǔ)比較運(yùn)算符PHP的比較運(yùn)算符有9種,分別是==(等于)、!=(不等于)、<>(不等于)、===(恒等于)、!==(不恒等)、>(大于)、<(小于)、>=(大于或等于)、<=(小于或等于)。邏輯運(yùn)算符PHP的邏輯運(yùn)算符有4種,分別是&&(與)或and(與)、||(或)或or(或)、!(非)、xor(異或)。PHP基礎(chǔ)條件運(yùn)算符條件運(yùn)算符(?:)是PHP中唯一的一個(gè)三元運(yùn)算符,其運(yùn)算結(jié)果由第1個(gè)操作數(shù)(或表達(dá)式)的值確定。當(dāng)?shù)?個(gè)操作數(shù)的值為true時(shí),運(yùn)算結(jié)果為第2個(gè)操作數(shù)(或表達(dá)式)的值;否則,運(yùn)算結(jié)果為第3個(gè)操作數(shù)(或表達(dá)式)的值。自增自減運(yùn)算符PHP的自增(++)、自減(--)運(yùn)算符,也稱為遞增、遞減運(yùn)算符,是一種特定形式的復(fù)合賦值運(yùn)算符。PHP基礎(chǔ)位運(yùn)算符位運(yùn)算符,就是對(duì)整型數(shù)據(jù)的各個(gè)位進(jìn)行操作。這些操作分別為&(按位與)、|(按位或)、~(取反)、<<(左移)、>>(右移)。錯(cuò)誤抑制運(yùn)算符PHP支持一個(gè)錯(cuò)誤控制運(yùn)算符@。當(dāng)將其放置在一個(gè)PHP表達(dá)式之前,該表達(dá)式可能產(chǎn)生的任何錯(cuò)誤信息都被忽略掉。類型運(yùn)算符Instanceof用于確定一個(gè)PHP變量是否屬于某一個(gè)類的實(shí)例。PHP基礎(chǔ)數(shù)據(jù)類型轉(zhuǎn)換在PHP中,對(duì)兩個(gè)變量進(jìn)行操作時(shí),若其數(shù)據(jù)類型不相同,則需要對(duì)其進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換。數(shù)據(jù)類型轉(zhuǎn)換分為自動(dòng)類型轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換。PHP基礎(chǔ)2、流程控制流程控制就是確定應(yīng)用程序中的代碼執(zhí)行流程。例如,程序中的某代碼塊是否需要執(zhí)行,是否需要執(zhí)行多次;是否需要從主流程進(jìn)入到輔流程(函數(shù)流程等);是否需要執(zhí)行其他文件中的代碼等。分支結(jié)構(gòu)PHP的分支結(jié)構(gòu)分為單分支和多分支。單分支:使用if
條件判斷語句,來實(shí)現(xiàn)流程的單分支。多分支:使用if…else…語句、if…elseif…else…語句和switch
語句,實(shí)現(xiàn)流程的多分支。PHP基礎(chǔ)循環(huán)結(jié)構(gòu)PHP有4種形式的循環(huán)結(jié)構(gòu),分別是while、dowhile、for和
foreach。循環(huán)結(jié)構(gòu)一般用于對(duì)集合數(shù)據(jù)的遍歷。PHP基礎(chǔ)函數(shù)PHP的函數(shù)分為自定義函數(shù)和內(nèi)置函數(shù)。自定義函數(shù)自定義PHP函數(shù),可以采用如下示例中的兩種格式。//PHP7以下版本格式。PHP7兼容這種格式functionsum($data){$sum=0;foreach($dataas$value){$sum+=$value;}return$sum;}$data=range(1,100);//測試數(shù)據(jù)echosum($data);//輸出1~100所有自然數(shù)之和PHP基礎(chǔ)//PHP7版本新增格式functiondataSum(array$data):float{$sum=0;foreach($dataas$value){$sum+=$value;}return$sum;}內(nèi)置函數(shù)內(nèi)置函數(shù)是預(yù)先在PHP中定義的函數(shù),可以直接使用。PHP基礎(chǔ)文件包含為了提高效率,在項(xiàng)目開發(fā)過程中需要特別注重代碼的重用性以及功能的模塊化。PHP提供了4種在應(yīng)用程序中包含文件的語句,用于組裝被隔離的單獨(dú)的功能模塊。Include與include_onceInclude語句將在其被調(diào)用的位置處判斷并包含一個(gè)文件;inlude_once與include功能相同,不同的是,它會(huì)首先判斷是否已經(jīng)包含了該文件。if(file_exists('./inc.php')){include'./inc.php';})PHP基礎(chǔ)require與require_onceRequire和require_once語句的用法與include、include_once相同,區(qū)別在于,若被包含的文件不存在,使用require和require_once語句時(shí),PHP會(huì)給出錯(cuò)誤信息,并中止程序運(yùn)行。PHP基礎(chǔ)3、字符串PHP提供了4種定義字符串的方法,分別是單引號(hào)(‘’)、雙引號(hào)(“”)和定界符(<<<TAG)與(<<<’TAG’)。字符串的定義字符串是PHP的重要數(shù)據(jù)類型,也是PHP應(yīng)用程序中使用最多的一種數(shù)據(jù)。字符串操作對(duì)字符串的操作一般使用PHP的內(nèi)置函數(shù)來完成。主要有:判斷變量是否為字符串確定字符串長度訪問字符串中的字符去除字符串兩端的空格及特殊字符轉(zhuǎn)義字符串中的特殊字符處理字符串大小寫確定字符串中子串的位置查找并替換字符串中的子串將字符串轉(zhuǎn)換成數(shù)組將字符串解析成多個(gè)變量PHP基礎(chǔ)正則表達(dá)式正則表達(dá)式是一個(gè)從左到右匹配目標(biāo)字符串的模式,它表示了具有某些特征的一類字符串。正則表達(dá)式的結(jié)構(gòu)與一般的數(shù)學(xué)表達(dá)式相似,由各個(gè)元素(操作符)或直接量(字面量)組合而成。(1)分隔符正則表達(dá)式需要由分隔符閉合包裹。分隔符可以是任意的非字母數(shù)字、非反斜線(\)、非空白ascii字符。經(jīng)常使用的分隔符有右斜線(/)、hash符號(hào)(#)等。例如:/wuhanChina/、#^[^0-9]$#、+php+、%[a-zA-Z0-9_-]%PHP基礎(chǔ)(2)元字符正則表達(dá)式中具有特殊含義的字符,稱為元字符。例如:\A、\b、\B、\d、\D、\s、\S、[]、()、{}、$、^、.、\、|、?、*、+、-、\w、\W這些元字符的含義,請(qǐng)大家查詢相關(guān)技術(shù)文獻(xiàn)。PHP基礎(chǔ)(3)修飾符修飾符是對(duì)正則表達(dá)式解釋的調(diào)整。例如,要求匹配時(shí)不區(qū)分大小寫、匹配成功一次后停止等。常用的修飾符主要有:i、m、s、x、e、A、D、S、U、X、u修飾符直接放在正則表達(dá)式的后面。例如:/china/i該正則表達(dá)式匹配字符串“china”的任何大小寫形式,如China、CHINA、chiNA等。PHP基礎(chǔ)(4)轉(zhuǎn)義符轉(zhuǎn)義符(\)用來取消字符所代表的特殊含義。例如:\?、\-、\.、\+(5)漢字的正則表達(dá)式匹配一個(gè)漢字:/[\x{4e00}-\x{9fa5}]/u匹配多個(gè)漢字:/[\x{4e00}-\x{9fa5}]+/uPHP基礎(chǔ)正則表達(dá)式函數(shù)PHP為使用Perl兼容的正則表達(dá)式搜索字符串,提供了一些功能函數(shù),主要包括:preg_filter()、preg_match()、preg_grep()、preg_match_all()、preg_quote()、preg_replace()、preg_split()等。PHP基礎(chǔ)PHP基礎(chǔ)4、數(shù)組PHP的數(shù)組分為索引數(shù)組和關(guān)聯(lián)數(shù)組,索引數(shù)組的鍵為數(shù)字,關(guān)聯(lián)數(shù)組的鍵為字符串。例如:array(‘PHP’,’C++’,’java’);//索引數(shù)組array(‘a(chǎn)dmin’=>[‘王一’,’李四’],’edit’=>[‘王二’,’趙五’]);//關(guān)聯(lián)數(shù)組創(chuàng)建/檢查數(shù)組創(chuàng)建數(shù)組在PHP中,數(shù)組除了可以用賦值的方式創(chuàng)建外,還可以使用array()語言結(jié)構(gòu),以及range()等函數(shù)來創(chuàng)建。例如:$course=array(‘PHP’,’C++’,’java’);$int_num=range(1,100,2);//用預(yù)定義的值范圍創(chuàng)建數(shù)組。第3個(gè)參數(shù)為步長PHP基礎(chǔ)數(shù)組檢查使用函數(shù)is_array()判斷變量是否為數(shù)組;使用函數(shù)in_array()檢查數(shù)組中是否存在某個(gè)值;使用函數(shù)array_unique()將數(shù)組調(diào)整為沒有重復(fù)值元素的數(shù)組;使用函數(shù)count()或其別名sizeof()確定數(shù)組元素個(gè)數(shù)。PHP基礎(chǔ)添加和刪除數(shù)組元素使用array_unshift()和array_push()函數(shù)分別在數(shù)組頭和尾添加一個(gè)或多個(gè)元素。例如:$array=array(1,2,3);$r1=array_unshift($array,0);//變量$r1的值為4。新數(shù)組長度array_push($array,4);//變量$r2的值為5。新數(shù)組長度$r3=array_shift($array);//變量$r3的值為0。被刪除的數(shù)組的第1個(gè)元素$r4=array_pop($array);//變量$r4的值為4。被刪除的數(shù)組的最后一個(gè)元素PHP基礎(chǔ)定位數(shù)組元素使用in_array()函數(shù)在數(shù)組中搜索一個(gè)特定元素是否存在;使用array_search()函數(shù)在數(shù)組中搜索一個(gè)指定的元素;使用array_key_exists()函數(shù)在數(shù)組中搜索一個(gè)指定的鍵是否存在;使用array_keys()函數(shù)獲取數(shù)組的所有鍵;使用array_values()函數(shù)獲取數(shù)組的所有值。PHP基礎(chǔ)遍歷數(shù)組使用函數(shù)next()、prev()、end()、reset()分別將數(shù)組指針移動(dòng)到后一個(gè)元素、前一個(gè)元素、最后一個(gè)元素和第1個(gè)元素,并返回當(dāng)前數(shù)組元素的值。$r1=next($array2);//$array2為上述3中測試數(shù)組echo$r1;//輸出“北京”$r2=prev($array2);echo$r1;//輸出“武漢”$r3=end($array2);echo$r1;//輸出“上海”$r4=reset($array2);echo$r4;//輸出“武漢”PHP基礎(chǔ)數(shù)組排序在PHP中,默認(rèn)情況下按英語指定的規(guī)則進(jìn)行排序。如果需要按另一種語言的約定進(jìn)行排序,需要使用setlocale()函數(shù)設(shè)置本地化環(huán)境。常用的排序函數(shù)主要有,array_reverse()、array_flip()、sort()、asort()、rsort()、arsort()、natsort()、natcasesort()、ksort()、krsort()、usort()等。這些函數(shù)的具體用法,請(qǐng)大家參考相關(guān)的技術(shù)文檔。PHP基礎(chǔ)合并數(shù)組、拆分、接合和分解數(shù)組(1)合并數(shù)組(2)連接數(shù)組(3)拆分?jǐn)?shù)組(4)獲取數(shù)組的交集與差集(5)其他數(shù)組函數(shù)PHP基礎(chǔ)PHP基礎(chǔ)5、錯(cuò)誤處理在運(yùn)行PHP程序時(shí),難免會(huì)出現(xiàn)各種各樣的錯(cuò)誤,需要對(duì)這些錯(cuò)誤的顯示進(jìn)行控制。PHP中的錯(cuò)誤級(jí)別主要包括:E_ALL、E_COMPILE_ERROR、E_COMPILE_WARNING、E_CORE_ERROR、E_CORE_WARNING、E_ERROR、E_NOTICE、E_WARNING、E_PARSE、E_RECOVERABLE_ERROR、E_STRICT、E_USER_ERROR、E_USER_WARNING、E_USER_NOTICE、E_DEPRECATED、E_USER_DEPRECATED等。3.2面向過程編程PHP程序設(shè)計(jì)可以采用面向過程方法,也可以采用面向?qū)ο蠓椒?。使用面向過程的方法進(jìn)行程序設(shè)計(jì),主要是通過PHP的內(nèi)置函數(shù)和用戶自定義函數(shù)來實(shí)現(xiàn)程序功能,它涉及數(shù)據(jù)的輸入與檢驗(yàn)、會(huì)話處理、文件和數(shù)據(jù)庫操作等相關(guān)技術(shù)。1、數(shù)據(jù)輸入PHP程序的數(shù)據(jù)輸入方式有多種,包括URL查詢字符串、Web表單、文件以及數(shù)據(jù)庫等。查詢字符串查詢字符串是附加在URL后面的字符串,它一般以“?”符號(hào)開頭,并以“參數(shù)名/值”對(duì)的形式傳遞參數(shù)。例如:?id=1&page=1通過查詢字符串傳遞的參數(shù),采用GET數(shù)據(jù)傳送方式,它存儲(chǔ)在PHP的預(yù)定義數(shù)組$_GET中,可以直接通過參數(shù)名來獲取。$id=$_GET[‘id’];面向過程Web表單Web表單是PHP與用戶交互的主要方式,通過表單提交的數(shù)據(jù),可以采用GET方式或POST方式來傳遞數(shù)據(jù),但一般都使用POST方式。例如:<formaction=""method="post"><labelfor="username">用戶名:</label><inputtype="text"name="username"><inputtype="submit"value="提交"></form>通過POST方式傳遞的數(shù)據(jù),存儲(chǔ)在PHP的預(yù)定義數(shù)組$_POST中,可以通過參數(shù)名來獲取。面向過程文件文件是數(shù)據(jù)的常用存儲(chǔ)方式,可以從文件中批量導(dǎo)入數(shù)據(jù)作為PHP程序的輸入。配置文件//導(dǎo)入config.ini中的數(shù)據(jù)$filename='inc.ini';$config=parse_ini_file($filename);其他文件將數(shù)據(jù)以特定的格式存儲(chǔ)在文件中,通過讀取文件內(nèi)容,將數(shù)據(jù)導(dǎo)入到PHP程序中。面向過程數(shù)據(jù)庫數(shù)據(jù)的持久化,一般都是通過文件和數(shù)據(jù)庫來實(shí)現(xiàn)的。因此,將數(shù)據(jù)庫中的數(shù)據(jù)讀取到PHP程序中,即可作為程序的輸入數(shù)據(jù)來使用。具體操作方法見后續(xù)的3.2.4小節(jié)。面向過程2、會(huì)話管理HTTP(超文本傳輸協(xié)議)定義了通過萬維網(wǎng)(www)傳輸文本、圖形、視頻和其他數(shù)據(jù)所用的規(guī)則。它是一種無狀態(tài)的協(xié)議,也就是說,服務(wù)器對(duì)每次的處理都與之前或之后的請(qǐng)求無關(guān)。在PHP中,解決HTTP協(xié)議的無狀態(tài)問題可以使用2種技術(shù),一種是Cookie技術(shù),另一種是Session技術(shù)。Session也被稱為會(huì)話。配置在PHP的配置文件php.ini中,有許多與Session或Cookie有關(guān)的配置項(xiàng),它們負(fù)責(zé)確定PHP會(huì)話處理的功能行為。面向過程CookieCookie是Web應(yīng)用為了辨別用戶而存儲(chǔ)在客戶端的數(shù)據(jù)。創(chuàng)建Cookie使用函數(shù)setcookie()創(chuàng)建或修改Cookie。setcookie('username','李木子',time()+60);//1分鐘后過期setcookie('username','李木子',time()+24*60*60);//1天后過期setcookie('username','李木子',time()-1);//立即過期。刪除Cookie面向過程使用Cookie當(dāng)瀏覽器向服務(wù)器發(fā)送請(qǐng)求時(shí),會(huì)攜帶GET、POST和Cookie等數(shù)據(jù),因此,可以通過PHP的預(yù)定義數(shù)組$_COOKIE來獲取Cookie數(shù)據(jù)。例如:If(isset($_COOKIE[‘username’])){$username=$_COOKIE[‘username’];//從COOKIE中獲取username數(shù)據(jù)}需要注意的是,當(dāng)PHP第1次通過setcookie()函數(shù)創(chuàng)建Cookie時(shí),$_COOKIE數(shù)組中沒有這個(gè)數(shù)據(jù),只有當(dāng)瀏覽器再次請(qǐng)求并攜帶Cookie時(shí),才能通過$_COOKIE數(shù)組獲取到該數(shù)據(jù)。面向過程SessionSession在Web應(yīng)用中稱為“會(huì)話”,是指用戶在訪問某個(gè)Web應(yīng)用時(shí),從進(jìn)入應(yīng)用到離開應(yīng)用所經(jīng)過的時(shí)間。Session技術(shù)是一種服務(wù)器端的技術(shù),它的生命周期從用戶訪問應(yīng)用開始,直到斷開與應(yīng)用的連接時(shí)結(jié)束。當(dāng)PHP啟動(dòng)Session時(shí),服務(wù)器為每個(gè)用戶的瀏覽器創(chuàng)建一個(gè)供其獨(dú)享的Session文件,用于保存用戶登錄狀態(tài)、驗(yàn)證碼等。當(dāng)服務(wù)器創(chuàng)建Session時(shí),每一個(gè)Session文件都具有一個(gè)唯一的會(huì)話ID,用于標(biāo)識(shí)不同的用戶。會(huì)話ID分別保存在客戶端和服務(wù)器端兩個(gè)位置。在客戶端上通過瀏覽器Cookie來保存,在服務(wù)器端,以文件的形式保存在指定的Session目錄中。面向過程啟動(dòng)Session在使用Session之前必須先啟動(dòng)。使用session_start()函數(shù)啟動(dòng)Session。使用Session通過預(yù)定義數(shù)組$_SESSION,來添加、讀取或修改Session中的數(shù)據(jù)。例如:Session_start();$_SESSION[‘username’]=‘李木子’;//添加Session數(shù)據(jù)if(isset($_SESSION[‘password’])){$password=$_SESSION[‘password’];//獲取Session數(shù)據(jù)}面向過程刪除Session數(shù)據(jù)可以刪除Session中的單個(gè)數(shù)據(jù),也可以銷毀全部的Session數(shù)據(jù)。例如:unset($_SESSION[‘username’]);//刪除單個(gè)數(shù)據(jù)$_SESSION=array();//刪除所有數(shù)據(jù)Session_unset();//刪除所有數(shù)據(jù)Session_destory();//結(jié)束會(huì)話面向過程編碼和解碼Session數(shù)據(jù)無論采用什么樣的存儲(chǔ)方式,PHP都會(huì)以標(biāo)準(zhǔn)化格式存儲(chǔ)Session數(shù)據(jù)。例如:username|s:9:"李木子";password|s:32:"e10adc3949ba59abbe56e057f20f883e";從示例可以看出,各個(gè)會(huì)話變量用分號(hào)隔開,每個(gè)會(huì)話變量由3部分組成,即名稱、長度和值。PHP自動(dòng)處理會(huì)話的編碼和解碼。若需要手工執(zhí)行這些操作,可以使用session_encode()和session_decode()函數(shù)。面向過程3、文件操作PHP只能對(duì)位于Web服務(wù)器上的文件進(jìn)行相關(guān)操作。獲取文件信息使用PHP的內(nèi)置函數(shù),來獲取文件的一些基本信息。這些信息包括文件名、文件大小、文件的最后訪問時(shí)間、文件的最后改變時(shí)間等。常用的文件信息查詢函數(shù),主要有file_exists()、basename()、dirname()、pathinfo()、realpath()、filesize()、fileatime()、filectime()、filemtime()、fileowner()、fileperms()、stat()等。面向過程打開和關(guān)閉文件使用PHP內(nèi)置函數(shù)fopen()和fclose()來打開和關(guān)閉文件。例如:$filename=__FILE__;$file=fopen(filename,’r’);//以只讀方式打開文件。變量$file為資源類型fclose($file);//關(guān)閉由fopen()打開的文件示例代碼中的參數(shù)“r”為文件模式,表示只讀。文件模式還有r+(讀寫)、w(只寫)、w+(讀寫)、a(只寫)、a+(讀寫)、b(以二進(jìn)制模式打開)、t(以文本模式打開)。面向過程讀取文件在PHP中,可以用不同的方式讀取文件內(nèi)容。將文件讀入數(shù)組使用file()函數(shù)將文件讀入數(shù)組。將文件內(nèi)容讀入字符串變量使用file_get_contents()函數(shù)將文件中的內(nèi)容讀到字符串中。讀取一定數(shù)目的字符使用函數(shù)fgetc()讀取文件中的一個(gè)字符。讀取CSV文件內(nèi)容使用fgetcsv()函數(shù)可以很方便地讀取CSV文件內(nèi)容。面向過程寫入文件使用函數(shù)fwrite()將字符串寫入指定的文件中。例如:$filename="user.txt";$file=fopen($filename,'a+');//讀寫方式打開文件。$string="李木子,女,計(jì)科11901\n";fwrite($file,$string);//在文件中追加內(nèi)容。若文件不存在,則新建fclose($file);面向過程文件上傳在PHP中,通過適當(dāng)?shù)呐渲?,利用上傳表單可以將客戶端的文件上傳到服?wù)器上。文件上傳配置若通過PHP上傳文件,首先需要在PHP的文件中進(jìn)行適當(dāng)?shù)呐渲梦募蟼鞅韱紊蟼鞯奈募?shù)據(jù)通過POST方法傳送,表單的enctype必須設(shè)置為multipart/form-data。上傳文件的接收在PHP中,與上傳文件有關(guān)的信息存儲(chǔ)在預(yù)定義數(shù)組$_FILES中。上傳文件的移動(dòng)PHP上傳文件存儲(chǔ)在服務(wù)器上的臨時(shí)目錄中,需要將其移動(dòng)到指定的目錄下。面向過程4、數(shù)據(jù)庫操作PHP支持多種數(shù)據(jù)庫的操作,這里以MySQL為例簡單說明。使用mysqli擴(kuò)展PHP對(duì)數(shù)據(jù)的支持,是通過擴(kuò)展來實(shí)現(xiàn)的。打開PHP的配置文件php.ini,開啟相應(yīng)的數(shù)據(jù)庫擴(kuò)展。連接數(shù)據(jù)庫使用mysqli_connect()函數(shù)連接MYSQL數(shù)據(jù)庫。$link=@mysqli_connect('localhost','root','123456','exampleDB');該函數(shù)其實(shí)是函數(shù)mysqli::__construct()的別名。面向過程執(zhí)行查詢可以使用mysqli_query()函數(shù)執(zhí)行查詢。例如:$query='showdatabases';//查詢語句$result=mysqli_query($link,$query);//執(zhí)行查詢該函數(shù)為mysqli::query()函數(shù)別名。處理結(jié)果集執(zhí)行查詢后得到的結(jié)果集的類型,與查詢的種類有關(guān)。例如,成功執(zhí)行select查詢后返回的是mysqli_result對(duì)象;而執(zhí)行insert后,返回的是受影響的行數(shù)。所以,要根據(jù)不同的結(jié)果類型,進(jìn)行不同的處理。面向過程3.3面向?qū)ο缶幊?、類與對(duì)象目前,Web應(yīng)用開發(fā)普遍采用面向?qū)ο蟮某绦蛟O(shè)計(jì)方法。類是用戶自定義的數(shù)據(jù)類型,是用于生成對(duì)象的代碼模板;對(duì)象是根據(jù)類中定義的模板所構(gòu)造的數(shù)據(jù),也稱為類的實(shí)例,它是由類定義的數(shù)據(jù)類型。類的定義在PHP中,類由關(guān)鍵字class
來聲明。classEmployee{private$name;publicfunctionsetName($name){$this->name=$name;}publicfunctionprintInfo(){echo$this->name;}}面向?qū)ο髮?duì)象的創(chuàng)建對(duì)象是類的實(shí)例。通過new關(guān)鍵字創(chuàng)建類的對(duì)象。例如:$staff=newEmployee;//Employee為上小節(jié)1中定義的類$staff=newEmployee();類的方法中還可以使用一個(gè)名為$this的內(nèi)部變量,它表示對(duì)象本身。該對(duì)象默認(rèn)存在,不需要?jiǎng)?chuàng)建。對(duì)象的使用對(duì)象創(chuàng)建完成后,就可以用它訪問對(duì)象的屬性和方法了。$staff->setName('李木子');//$staff為上小節(jié)2中定義的對(duì)象$staff->printInfo();//輸出字符串“李木子”面向?qū)ο髮?duì)象方法對(duì)象方法,也就是對(duì)象中的函數(shù),用于定義對(duì)象的行為。在PHP的類中定義方法,除了必須使用關(guān)鍵字function外,還可以用public、private、protected、abstract、final和static關(guān)鍵字進(jìn)行修飾。對(duì)象屬性對(duì)象屬性,也就是對(duì)象中的變量或常量,用于定義對(duì)象的靜態(tài)特性。屬性的定義與普通的PHP變量或常量基本相同,唯一不同的是,它的前面會(huì)有public、private、protected、var或static、const關(guān)鍵字修飾。面向?qū)ο?、繼承與多態(tài)面向?qū)ο蟪绦蛟O(shè)計(jì)有三大特征,即封裝性、繼承性和多態(tài)性。封裝性通過訪問控制修飾符public、protected和private來實(shí)現(xiàn),它們可以控制類中成員的可見性;繼承是一種在現(xiàn)有類的基礎(chǔ)上構(gòu)建新類的機(jī)制;多態(tài)則是類中的成員方法在不同的情形下,會(huì)呈現(xiàn)出不同的特性,也就是同一操作作用于不同的對(duì)象的時(shí)候,會(huì)產(chǎn)生不同的執(zhí)行結(jié)果。面向?qū)ο罄^承在PHP中,可以在一個(gè)現(xiàn)有的類的基礎(chǔ)上創(chuàng)建一個(gè)新的類,新類擁有原有類的全部或部分屬性及方法,這種創(chuàng)建新類的機(jī)制就是繼承。其中,原有的類被稱為基類或父類;新類被稱為子類或派生類。繼承的實(shí)現(xiàn)在PHP中,類的繼承通過關(guān)鍵字extends來實(shí)現(xiàn)。classExecutive
extends
Employee{publicfunctionNotice(){echo"通知:明天上午8:00例會(huì)".'【'.$this->getName().'】';}}面向?qū)ο罄^承中的構(gòu)造方法在類的繼承中,父類和子類中的構(gòu)造方法的調(diào)用,與它們是否存在有關(guān)。若父類有構(gòu)造方法而子類沒有,在子類實(shí)例化時(shí),自動(dòng)調(diào)用父類的構(gòu)造方法。方法覆蓋方法覆蓋也稱為方法重寫,是指子類和父類中存在同名的方法,子類方法是對(duì)父類方法的重新定義。無論是靜態(tài)方法還是非靜態(tài)方法都可以被覆蓋。面向?qū)ο笈cC++不同,PHP不支持通過函數(shù)重載實(shí)現(xiàn)多態(tài),它只能通過函數(shù)的覆蓋來實(shí)現(xiàn)。即通過在繼承關(guān)系中的不同層次的類中,定義同名的方法來實(shí)現(xiàn)。例如:多態(tài)面向?qū)ο?、輔助函數(shù)在PHP中,內(nèi)置了一些函數(shù)用于幫助開發(fā)人員管理和使用類庫。主要有class_exits()、get_class()、get_class_methods()、get_class_vars()、get_declared_classes()、get_object_vars()、get_parent_class()、interface_exists()、is_a()、is_subclass_of()、method_exists()等。除上述輔助函數(shù)之外,PHP還提供了一個(gè)重要的魔術(shù)方法__autoload(),使用這個(gè)方法可以非常輕松地加載類的聲明文件,而不需要使用文件包含語句。面向?qū)ο?、高級(jí)特性隨著版本的不斷更新,PHP的面向?qū)ο蠊δ茉絹碓綇?qiáng)大。下面是幾個(gè)PHP的面向?qū)ο蟾呒?jí)特性。對(duì)象復(fù)制對(duì)象復(fù)制,也稱為對(duì)象克隆,就是創(chuàng)建已有對(duì)象的一個(gè)副本。在程序設(shè)計(jì)過程中,一般情況下并不需要完全復(fù)制一個(gè)對(duì)象來獲得其中屬性,但有些情況下,采用對(duì)象復(fù)制會(huì)大大提高設(shè)計(jì)效率。對(duì)象的復(fù)制使用關(guān)鍵字clone來實(shí)現(xiàn)。示例如下:面向?qū)ο蠼涌诮涌?interface)定義了實(shí)現(xiàn)某種服務(wù)的一般規(guī)范,聲明了所需要的函數(shù)和常量,但不指定如何實(shí)現(xiàn)。接口通過interface關(guān)鍵字來定義,就像定義一個(gè)標(biāo)準(zhǔn)的類一樣,但其中定義的所有方法都是沒有函數(shù)體的。接口中定義的所有方法都必須是公有訪問權(quán)限。例如:interfaceAnimal{CONSTTYPE='動(dòng)物';publicfunctionshout();}面向?qū)ο髏rait結(jié)構(gòu)從PHP5.4.0開始,PHP實(shí)現(xiàn)了一種代碼重用的方法,這種方法稱為trait。它是為類似PHP的單繼承語言而準(zhǔn)備的一種代碼重用機(jī)制。通過Trait,開發(fā)人員能夠在不同結(jié)構(gòu)的類中重用某些方法(函數(shù))。例如:traitlog{//trait結(jié)構(gòu)
functionprint_log($data){$log_file=fopen('log.txt','a+');$log_txt='log_time:'.date('Y-m-dH:i:s')."\t";$log_txt.='user:'.$data['user']."\t";$log_txt.='operate:'.$data['operate']."\n";fwrite($log_file,$log_txt);fclose($log_file);}}面向?qū)ο蠓瓷銩PIPHP中的反射API就像Java中的java.lang.reflect包一樣。它由一系列可以分析屬性、方法和類的內(nèi)置類組成。它在某些方面和前述的輔助函數(shù)功能相似,但更加靈活。PHP的反射API類主要有:Reflection、ReflectionClass、ReflectionMethod、ReflectionParameter、ReflectionProperty、ReflectionFunction、ReflectionExtension和ReflectionException等。面向?qū)ο?、數(shù)據(jù)庫操作在PHP中,使用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖北省宜昌市虎亭區(qū)2025屆小升初數(shù)學(xué)模擬試卷含解析
- 青島市市北區(qū)2025屆數(shù)學(xué)四下期末檢測模擬試題含解析
- 四川航天職業(yè)技術(shù)學(xué)院《當(dāng)代西方學(xué)者眼中的馬克思主義哲學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 南昌應(yīng)用技術(shù)師范學(xué)院《網(wǎng)絡(luò)與新媒體導(dǎo)論》2023-2024學(xué)年第二學(xué)期期末試卷
- 武漢科技大學(xué)《建筑法規(guī)》2023-2024學(xué)年第二學(xué)期期末試卷
- 電磁閥氣源控制系統(tǒng)助力工業(yè)智能化
- 廣東工貿(mào)職業(yè)技術(shù)學(xué)院《燈具與照明設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴州城市職業(yè)學(xué)院《施工原理與方法》2023-2024學(xué)年第二學(xué)期期末試卷
- 華中農(nóng)業(yè)大學(xué)《城市公共景觀設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 人口老齡化背景下居民儲(chǔ)蓄模式轉(zhuǎn)變調(diào)查問卷
- 2024年07月江蘇銀行招考筆試歷年參考題庫附帶答案詳解
- 2023中華護(hù)理學(xué)會(huì)團(tuán)體標(biāo)準(zhǔn)-注射相關(guān)感染預(yù)防與控制
- GB/T 6414-2017鑄件尺寸公差、幾何公差與機(jī)械加工余量
- 《金字塔原理-邏輯思維與高效溝通》汪洱課件
- 常見臨床實(shí)驗(yàn)室檢查解讀課件
- 簡諧運(yùn)動(dòng)課件
- 生命科學(xué)引論:遺傳學(xué)的魅力
- 北京市建設(shè)工程造價(jià)管理協(xié)會(huì) 京價(jià)協(xié)2015011
- 小學(xué)數(shù)學(xué)人教四年級(jí)下冊圖形的運(yùn)動(dòng)軸對(duì)稱教案詳案
- 招貼設(shè)計(jì) 課件完整版
- 住宅房屋樓層修正系數(shù)表
評(píng)論
0/150
提交評(píng)論