php動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)教案_第1頁(yè)
php動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)教案_第2頁(yè)
php動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)教案_第3頁(yè)
php動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)教案_第4頁(yè)
php動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)教案_第5頁(yè)
已閱讀5頁(yè),還剩124頁(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)介

《PHP動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)》教案2016~2017學(xué)年第2學(xué)期二○一七年二月

《ASP動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)》課程教案授課班級(jí)15級(jí)淘寶班課次1授課方式理論課?討論課□實(shí)驗(yàn)課□習(xí)題課□其他□課時(shí)安排3授課題目(教學(xué)章、節(jié)或主題):PHP環(huán)境配置、數(shù)據(jù)類型常用PHP運(yùn)算類型、PHP條件、循環(huán)語(yǔ)句的介紹與應(yīng)用教學(xué)目的、要求(分掌握、熟悉、了解三個(gè)層次):了解PHP環(huán)境的配置,wamp環(huán)境的設(shè)置。掌握PHP的數(shù)據(jù)類型及其數(shù)據(jù)的運(yùn)算規(guī)則。掌握PHP的條件語(yǔ)句、循環(huán)語(yǔ)句的用法及語(yǔ)法規(guī)則。教學(xué)重點(diǎn)及難點(diǎn):動(dòng)態(tài)網(wǎng)站的環(huán)境配置與PHP的條件語(yǔ)句、循環(huán)語(yǔ)句的用法及語(yǔ)法規(guī)則。教學(xué)基本內(nèi)容及方法手段PHP環(huán)境搭配和代碼調(diào)試1、PHP的優(yōu)勢(shì)和背景PHP是能讓你生成動(dòng)態(tài)網(wǎng)頁(yè)的工具之一。PHP代表:超文本預(yù)處理器(PHP:HypertextPreprocessor)。PHP是完全免費(fèi)的,不用花錢(qián),你可以從PHP官方站點(diǎn)()自由下載。你不必把頭埋進(jìn)100多頁(yè)的文檔中努力學(xué)習(xí)才可以寫(xiě)出一個(gè)象樣的程序。只要了解一些基本的語(yǔ)法和語(yǔ)言特色,你就可以開(kāi)始你的PHP編碼之旅了。如果更好的學(xué)習(xí)建議可以先看看些HTML和SQL的基礎(chǔ)。2、PHP環(huán)境的搭配所需的工具:WampServer5集成環(huán)境Wamp5是Apache+PHP+Mysql在Windows下的集成環(huán)境,擁有簡(jiǎn)單的圖形和SQLiteManager1.2.0滿了大部分PHPer的需求…介紹一下wamp的虛擬目錄、服務(wù)圖標(biāo)的顯示、環(huán)境測(cè)試3、PHP常用工具和數(shù)據(jù)庫(kù)常用工具PHP開(kāi)發(fā)工具:ZendStodio,PHPedit,EditPlus2,easyeclipse,DW等MYSQL工具:MYSQLAdministrator4、書(shū)寫(xiě)和調(diào)試簡(jiǎn)單的PHP代碼從語(yǔ)法上看,PHP語(yǔ)言近似于C語(yǔ)言。可以說(shuō),PHP是借鑒C語(yǔ)言的語(yǔ)法特征,由C語(yǔ)言改進(jìn)而來(lái)的。我們可以混合編寫(xiě)PHP代碼和HTML代碼,不僅可以將PHP腳本嵌入到HTML文件中,我們甚至還可以把HTML標(biāo)簽也嵌入在PHP腳本里。以下是你可以采用的幾種方法。你可以選用其中一種你最適合的并且就這樣堅(jiān)持這種方法!從HTML中分離以下是可以使用的方法:

<?...?>短標(biāo)簽?zāi)J?/p>

<?php...?>標(biāo)準(zhǔn)模式

<scriptlanguage="php">...</script>類似于javascript模式

<%...%>修改模式,也可以支持在PHP中用“;”來(lái)分隔語(yǔ)句。那些從HTML中分離出來(lái)的標(biāo)志也表示語(yǔ)句的結(jié)束。注釋PHP支持C,C和Unix風(fēng)格的注釋方式:/*C,C風(fēng)格多行注釋*/

//C風(fēng)格單行注釋

#Unix風(fēng)格單行注釋例子:<?phpecho"HelloWorld!";或phpinfo();

?>5、如何處理簡(jiǎn)單的PHP錯(cuò)誤1、你要把PHP.ini里的display_errors?=?On才可以顯示錯(cuò)誤位置2、習(xí)慣使用echo或者print打印,每一步輸出看看結(jié)果是否正確。3、學(xué)會(huì)使用注釋來(lái)屏蔽符號(hào)來(lái)調(diào)試//………./*…………*/#4、要懂得看錯(cuò)誤信息錯(cuò)誤的顯示信息的行數(shù)及什么錯(cuò)位置。PHP的數(shù)據(jù)類型源碼調(diào)試1、PHP基本語(yǔ)法和數(shù)據(jù)類型(1)、PHP基本語(yǔ)法:1、htm和php混編<fontcolor=red>我好</font>2、一個(gè)語(yǔ)句以;(分號(hào)結(jié)束,英文半角)3、如何定義一個(gè)變量,和變量的使用$abc=9;//以$開(kāi)始,以A-Z或a-zEcho$abc;(2)、PHP數(shù)據(jù)運(yùn)算類型四種標(biāo)量類型: boolean(布爾型)理解為真假型$bo=TRUE;$bo=FALSE;//賦值為0時(shí)為假,大于0為真 integer(整型)$bo=1;$bo=-12; float(浮點(diǎn)型,也作“double”)理解為小數(shù)型$bo=1.001;$bo=3.1415926; string(字符串)$bo=“這段字符串orENWord”;//雙引號(hào)支持轉(zhuǎn)義字符,單引號(hào)不支持。兩種復(fù)合類型: array(數(shù)組)$bo=array(1,2,3,4);$bo=array(“A”=>1,“B”=>2); object(對(duì)象)源碼調(diào)試1、解壓源碼到網(wǎng)站目錄2、按照數(shù)據(jù)庫(kù)3、調(diào)試成功2、學(xué)習(xí)一個(gè)PHP源碼調(diào)試(discuz論壇)常用PHP運(yùn)算類型介紹與應(yīng)用1、算術(shù)運(yùn)算//理解為數(shù)學(xué)運(yùn)算例:5*6-122*(28+1)注:算術(shù)運(yùn)算遵循數(shù)學(xué)運(yùn)算規(guī)則:從左到右,先算乘除后算加減,遇到括號(hào)先算括號(hào)內(nèi).2、賦值運(yùn)算//把一個(gè)值寫(xiě)入一個(gè)變量例:$a=1;$a+=2;$a*=3;注:把右邊的值賦予左的變量。3、比較運(yùn)算/用來(lái)確定兩個(gè)數(shù)之間的關(guān)系例:1==23!=25<3"ok"=="ok"1==='1'//值相等且類型相同,用echo輸出時(shí)真為1,假不輸出。注:比較運(yùn)算得到的值為布爾值4、邏輯運(yùn)算//先將比較的兩邊轉(zhuǎn)換成布爾類型,再執(zhí)行他們的關(guān)系例:1&&10or11xor1!$a注:邏輯運(yùn)算得到的值為布爾值5、遞增遞減運(yùn)算//只操作變量的一種運(yùn)算例:$a++//$a=$a+1++$a$a--//$a=$a-1--$aPHP條件語(yǔ)句的介紹與應(yīng)用if條件語(yǔ)句程序中最常見(jiàn)的,大部分語(yǔ)言中都存在的一種條件語(yǔ)句,在開(kāi)發(fā)中起著至關(guān)重要的作用,格式如下:if…else…if…else…if…elseif…if(expr)echoTRUEelseechoFALSEif(expr){echoTRUE}else{echoFALSE}if(expr){echoTRUE}elseif(expr){echoCON}else{echoFALSE}2、switch條件語(yǔ)句在多個(gè)條件當(dāng)中使用Switch更加精巧,格式如下:switch($i){case0:echo"輸出0";break;case1:echo"輸出1";break;case2:echo"輸出2";break;default:echo“其他默認(rèn)輸出”;}if($i==0){echo"輸出0";}elseif($i==1){echo"輸出1";}elseif($i==2){echo"輸出2";}PHP循環(huán)語(yǔ)句的介紹與應(yīng)用1、breakn循環(huán)控制語(yǔ)句//也可以理解為循環(huán)中斷語(yǔ)句,跳出循環(huán)語(yǔ)句break:跳出一層循環(huán)breakn;跳出N條for($a=1;$a<10;$a++){if($a==5)break;echo"循環(huán)".$a."</br>";}2、do…while循環(huán)語(yǔ)句do{……}while(expr)while(expr){……}先執(zhí)行一次循環(huán)再判斷條件先判斷條件執(zhí)再行一次循環(huán)for循環(huán)語(yǔ)句//for循環(huán)是PHP中最復(fù)雜的循環(huán)結(jié)構(gòu)。for(expr1;expr2;expr3){……}for($i=1;$i<=10;$i++){echo$i;//$i=1:無(wú)條件執(zhí)行//$i<=10,$i++:循環(huán)條件}作業(yè)、討論題、思考題:PHP環(huán)境的配置,wamp環(huán)境的設(shè)置,練習(xí)PHP的條件語(yǔ)句、循環(huán)語(yǔ)句的用法及語(yǔ)法規(guī)則的應(yīng)用。課后小結(jié):本節(jié)課主要講解了PHP環(huán)境的配置,wamp環(huán)境的設(shè)置,介紹了PHP的數(shù)據(jù)類型及PHP各種運(yùn)算及運(yùn)算規(guī)則。重點(diǎn)介紹了PHP的條件語(yǔ)句、循環(huán)語(yǔ)句的用法及語(yǔ)法規(guī)則?!禔SP動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)》課程教案授課班級(jí)15級(jí)淘寶班課次2授課方式理論課?討論課□實(shí)驗(yàn)課□習(xí)題課□其他□課時(shí)安排3授課題目(教學(xué)章、節(jié)或主題):PHP數(shù)組、函數(shù)及Mysql簡(jiǎn)介和創(chuàng)建新的數(shù)據(jù)庫(kù)與數(shù)據(jù)庫(kù)中的常用SQL語(yǔ)句教學(xué)目的、要求(分掌握、熟悉、了解三個(gè)層次):熟練掌握PHP數(shù)組的定義、數(shù)組的遍歷、foreach的應(yīng)用。掌握創(chuàng)建數(shù)據(jù)庫(kù)的方法及其基本語(yǔ)句。掌握數(shù)據(jù)庫(kù)中的常用SQL語(yǔ)句。教學(xué)重點(diǎn)及難點(diǎn):creat、select、update、insert語(yǔ)句的應(yīng)用。教學(xué)基本內(nèi)容及方法手段PHP數(shù)組的創(chuàng)建修改使用1、創(chuàng)建和修改數(shù)組/多維數(shù)組PHP中的數(shù)組是一個(gè)關(guān)鍵字或值的集合(值可以是任何一種類型,包括另一個(gè)數(shù)組)PHP中使用array來(lái)創(chuàng)建一個(gè)數(shù)組:array(key=>value,key=>value……)例子:$arr=array(3,5,7,9,6);$arr=array("id"=>2,"title"=>3);用方括號(hào)的語(yǔ)法來(lái)修改數(shù)組:$arr[]=value$arr=array("a"=>"理論","b"=>"教程","c"=>"第二次課");$arr['a']="PHP學(xué)習(xí)";$arr['c']="第二講";介紹一下print_r()函數(shù)$arr=array(array(2,4),array(3,5));print_r($arr);Array([0]=>Array([0]=>2[1]=>4)[1]=>Array([0]=>3[1]=>5))2、數(shù)組與數(shù)組的函數(shù)使用count函數(shù)統(tǒng)計(jì)數(shù)組條數(shù)count($arr);使用is_array函數(shù)判斷數(shù)組is_array($arr);另一種創(chuàng)建數(shù)組的函數(shù)explodeexplode("key",value);//分解函數(shù)$a="1986-1983-2010";$arr=explode("-",$a);Print_r($arr);3、使用foreach遍歷數(shù)組遍歷數(shù)組很多種方法,可以使用For循環(huán),while循環(huán),最巧妙的一種遍歷數(shù)組foreach給我們帶來(lái)了跟多方便foreach($arras$key=>$value){……}$arr=array(1986,1983,2010);foreach($arras$key=>$value){ echo"需要的關(guān)鍵字$key需要的值$value<br>"; }PHP函數(shù)和自定義函數(shù)1、PHP函數(shù)介紹函數(shù)就是為了解決一些常見(jiàn)問(wèn)題實(shí)現(xiàn)制作好的“模”。PHP函數(shù)分為:系統(tǒng)內(nèi)部函數(shù)和自定義函數(shù)。格式:func(val1,val2,…);例子date("Y-m-d")md5("zzhtpz")函數(shù)的優(yōu)越性:控制程序設(shè)計(jì)的復(fù)雜性提高軟件的可靠性提高軟件的開(kāi)發(fā)效率提高軟件的可維護(hù)性提高程序的重用性查看PHP中文手冊(cè),查看有關(guān)的函數(shù)2、PHP如何自定義函數(shù)使用Function來(lái)自定義一個(gè)函數(shù):格式:Functionfunc_name($val){……}函數(shù)的命名跟自定義變量一樣,只能使用_,A~Z,a~z,一個(gè)自定義函數(shù)中的變量是局部的,函數(shù)外不生效,使用global全局變量的時(shí)候,在函數(shù)外才可使用變量(不建議)。為了放置全局變量的混亂可以使用unset($var)刪除一個(gè)變量。functionee(){echo"輸出自定義函數(shù)";}ee();functionee($val){echo"輸出自定義函數(shù)".$val;}ee(33);3、使用自定義函數(shù)實(shí)例操作(1)使用return函數(shù)返回函數(shù)內(nèi)部值functionee(){return"輸出自定義函數(shù)";}$a=ee();echo$a;(2)自定義函數(shù)值的接收和選擇性接收f(shuō)unctionee($val){return"輸出自定義函數(shù)".$val;}$a=ee("好?");echo$a;functionee($val,$val2=1){ $a=$val+$val2;return$a;}$a=ee(5);echo$a;functionee($val,$val2=1){ $a=$val+$val2;return$a;}$a=ee(5,6);echo$a;直接接收選擇性接收(3)function_exists()判斷函數(shù)是否存在//防止錯(cuò)誤if(function_exists('ee')){ echo"真";}else{echo"假";}(4)引用返回值使用&符號(hào)Mysql簡(jiǎn)介和創(chuàng)建新的數(shù)據(jù)庫(kù)1、MYSQL簡(jiǎn)介與概要MySQL是一個(gè)小型關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),開(kāi)發(fā)者為瑞典MySQLAB公司,現(xiàn)在已經(jīng)被Sun公司收購(gòu),支持FreeBSD、Linux、MAC、Windows等多種操作系統(tǒng),與其他的大型數(shù)據(jù)庫(kù)例如Oracle、DB2、SQLServer等相比功能稍弱一些。1、可以處理?yè)碛猩锨f(wàn)條記錄的大型數(shù)據(jù)2、支持常見(jiàn)的SQL語(yǔ)句規(guī)范3、可移植行高,安裝簡(jiǎn)單小巧4、良好的運(yùn)行效率,有豐富信息的網(wǎng)絡(luò)支持5、調(diào)試、管理,優(yōu)化簡(jiǎn)單(相對(duì)其他大型數(shù)據(jù)庫(kù))2、訪問(wèn)MYSQL的幾種途徑知識(shí)點(diǎn):MYSQL默認(rèn)使用的是3306端口1、使用工具M(jìn)YSQL官方的工具訪問(wèn):MySQLAdministratortool安裝:步驟下載Backupproject//備份Restore//導(dǎo)入MySQLquery//瀏覽表和數(shù)據(jù)庫(kù)2、使用第三方工具訪問(wèn):mysqlexec、mysql連接器3、使用WEB方式訪問(wèn):phpMyAdmin//最常見(jiàn)比較:使用客戶端工具操作效率高,安全性高,使用WEB方式簡(jiǎn)單方便,不受限制。3、介紹數(shù)據(jù)庫(kù)中常用字段類型整數(shù)型:TINYINT,SMALLINT,INT,BIGINT小數(shù)型:FLOAT,DOUBLE,DECIMAL(M,D)字符型:CHAR,VARCHAR日期型:DATETIME,DATE,TIMESTAMP備注型:TINYTEXT,TEXT,LONGTEXT4、創(chuàng)建一個(gè)簡(jiǎn)單的數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)命令:CREATETABLE刪除一個(gè)數(shù)據(jù)庫(kù)命令:DROPTABLE修改一個(gè)字段名稱:RENAMETABLE`原字段`TO`新字段`;刪除一個(gè)字段:ALTERTABLE`表`DROP`原字段`插入一個(gè)字段:ALTERTABLE`表`ADD`新字段`…AFTER`原字段`CREATETABLE`test`(`id` int(10)NOTNULLauto_increment,`uid` varchar(10)NOTNULLdefault'0',`regdate`dateNOTNULL,`remark`textNULL,PRIMARYKEY(`id`))實(shí)例講解:1.將命令復(fù)制到phpmyadmin中建立表2.用客戶端工具建立表//設(shè)計(jì)幾個(gè)字段瀏覽/結(jié)構(gòu)/SQL/搜索、插入、導(dǎo)出/import/操作.導(dǎo)入數(shù)據(jù)庫(kù)文件1、SELECT查詢語(yǔ)句和條件語(yǔ)句SELECT查詢字段FROM表名WHERE條件查詢字段:可以使用通配符*、字段名、字段別名表名:數(shù)據(jù)庫(kù).表名,表名常用條件:=等于、<>不等于、in包含、notin不包含、like匹配、BETWEEN在范圍、notBETWEEN不在范圍<、>條件運(yùn)算:and、or、()2、排序,分組,指針查詢,計(jì)算分組語(yǔ)句:groupby字段排序語(yǔ)句:orderby字段,字段ASC/DESC指針查詢:limit初始值,結(jié)束值計(jì)算:COUNT(*)統(tǒng)計(jì)函數(shù)MAX(*)最大值函數(shù)MIN(*)最小值函數(shù)AVG(*)平均值函數(shù)SUM(*)累計(jì)值函數(shù)(∑)3、Insert插入語(yǔ)句insertinto表名(字段…,…)values(值…,…)insertinto表名values(值…,…)插入時(shí)須考慮清楚字段類型避免插入后出現(xiàn)缺值,亂碼現(xiàn)象Update更新語(yǔ)句UPDATE表名SET字段=值WHERE條件limit常用條件:=等于、<>不等于、in包含、notin不包含、like匹配、BETWEEN在范圍、notBETWEEN不在范圍條件預(yù)算:and、or、()5、Delete刪除語(yǔ)句DELETEFROM表名WHERE條件limit常用條件:=等于、<>不等于、in包含、notin不包含、like匹配//%、 BETWEEN在范圍、notBETWEEN不在范圍條件預(yù)算:and、or、()MYSQL在PHP5中的應(yīng)用1、PHP與mysql建立鏈接php.ini加載mysql組件:extension=php_mysql.dll前的;去掉extension_dir=""路徑是否正確PHP鏈接mysql函數(shù)mysql_connect:開(kāi)啟MySQL鏈接$conn=@mysql_connect("localhost","root","")ordie("鏈接錯(cuò)誤");mysql_select_db:打開(kāi)一個(gè)數(shù)據(jù)庫(kù)mysql_select_db("ww",$conn);注意:@和ordie隱藏錯(cuò)誤和條件顯示mysql_connect("主機(jī)","用戶名","密碼")mysql_select_db("打開(kāi)數(shù)據(jù)庫(kù)",連接標(biāo)識(shí)符);如果不特別聲明連接標(biāo)識(shí)符,則默認(rèn)為是上一次打開(kāi)的連接。2、如何去執(zhí)行一個(gè)SQL語(yǔ)句mysql_query(SQL語(yǔ)句,連接標(biāo)識(shí)符);說(shuō)明:mysql_query用來(lái)根據(jù)連接標(biāo)識(shí)符向該數(shù)據(jù)庫(kù)服務(wù)器的當(dāng)前數(shù)據(jù)庫(kù)發(fā)送查詢,如果連接標(biāo)識(shí)符默認(rèn),則默認(rèn)為是上一次打開(kāi)的連接。返回值:成功后返回一個(gè)結(jié)果標(biāo)識(shí)符,失敗時(shí)返回false。$sql="INSERTINTOtest(id,name,regdate)values('','huafan',now())";mysql_query($sql,$conn);3、兩種查詢函數(shù)array/row區(qū)別格式:mysql_fetch_row(result);說(shuō)明:mysql_fetch_row用來(lái)查詢結(jié)果的一行保存至數(shù)組,該數(shù)組下標(biāo)從0開(kāi)始,每一個(gè)數(shù)組元素對(duì)應(yīng)一個(gè)域。通過(guò)循環(huán),可以將查詢結(jié)果全部獲得。$sql="SELECT*FROM`test`";$query=mysql_query($sql,$conn);$row=mysql_fetch_row($query);print_r($row);格式:mysql_fetch_array(result);說(shuō)明:mysql_fetch_array和mysql_fetch_row功能基本相同,只不過(guò)它除了可以用從0開(kāi)始的偏移量作索引,還可以用域名作索引。值返回下一行的所有域值,并將其保存至一個(gè)數(shù)組中,沒(méi)有行時(shí)返回false。$sql="SELECT*FROM`test`";$query=mysql_query($sql,$conn);$row=mysql_fetch_array($query);echo$row['name'];輸出所有內(nèi)容:$sql="SELECT*FROM`test`";$query=mysql_query($sql,$conn);while($row=mysql_fetch_array($query)){echo$row['name']."".$row['regdate']."<br>"."<hr>";}mysql_query("setnames'GBK'");解決中文亂碼$conn=@mysql_connect("localhost","root","")ordie("鏈接錯(cuò)誤");mysql_select_db("ww",$conn);mysql_query("setnames'GBK'");$sql="SELECT*FROM`test`";$query=mysql_query($sql,$conn);while($row=mysql_fetch_array($query)){echo$row['name']."".$row['regdate']."<br>"."<hr>";}4、其他常用Mysql函數(shù)介紹mysql_num_rows用于計(jì)算查詢結(jié)果中所得行的數(shù)目echomysql_num_rows($query);mysql_insert_id傳回最后一次使用INSERT指令的ID。mysql_tablename取得數(shù)據(jù)庫(kù)名稱mysql_error返回錯(cuò)誤信息mysql_close關(guān)閉MySQL鏈接學(xué)習(xí)制作PHP+MYSQL留言板1、設(shè)計(jì)一個(gè)完整程序的流程2、HTML部分表單標(biāo)簽的使用<formaction=""method="GET"><inputtype="text"size=10name="user"/><inputtype="text"size=20name="title"/><textareaname="content"></textarea><inputtype="submit"name="submit"/></form>3、PHP里的頁(yè)面相互調(diào)用require()與require_once()通常放在PHP程序的最前面,PHP程序在執(zhí)行前,就會(huì)先讀入require所指定引入的文件,如果出現(xiàn)錯(cuò)誤是致命的。include()與include_once()可以放在PHP程序的任何一個(gè)位置,PHP程序在執(zhí)行到時(shí),才會(huì)先讀入include所指定引入的文件,如果出現(xiàn)錯(cuò)誤將會(huì)提示。require('con.php');include('con.php');PHP接收參數(shù)的幾種方式PHP5在默認(rèn)的情況下接收參數(shù)是需要使用$_GET['value'];$_POST['value'];還可以在PHP.ini文件中的將register_globals=Off改register_globals=on可以直接使用,$value的值作業(yè)、討論題、思考題:制作PHP+MYSQL留言板課后小結(jié):本節(jié)課講解了PHP數(shù)組的創(chuàng)建修改,用foreach遍歷數(shù)組,PHP函數(shù)的應(yīng)用和如何自定義函數(shù),Mysql的簡(jiǎn)介和創(chuàng)建新的數(shù)據(jù)庫(kù)。創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)命令:CREATETABLE,刪除一個(gè)數(shù)據(jù)庫(kù)命令:DROPTABLE,修改一個(gè)字段名稱:RENAMETABLE`原字段`TO`新字段`;刪除一個(gè)字段:ALTERTABLE`表`DROP`原字段`,插入一個(gè)字段:ALTERTABLE`表`ADD`新字段`…AFTER`原字段。介紹了SELECT查詢語(yǔ)句和條件語(yǔ)句,排序,分組,指針查詢,計(jì)算;Insert插入語(yǔ)句,Update更新語(yǔ)句,Delete刪除語(yǔ)句,PHP與mysql建立鏈接:$conn=@mysql_connect("localhost","root","")ordie("鏈接錯(cuò)誤");,如何去執(zhí)行一個(gè)SQL語(yǔ)句:mysql_query(SQL語(yǔ)句,連接標(biāo)識(shí)符);,兩種查詢函數(shù)array/row區(qū)別,其他常用Mysql函數(shù)介紹如mysql_num_rows用于計(jì)算查詢結(jié)果中所得行的數(shù)目echomysql_num_rows($query);mysql_insert_id傳回最后一次使用INSERT指令的ID。mysql_tablename取得數(shù)據(jù)庫(kù)名稱,mysql_error返回錯(cuò)誤信息,mysql_close關(guān)閉MySQL鏈接?!禔SP動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)》課程教案授課班級(jí)15級(jí)淘寶班課次3授課方式理論課?討論課□實(shí)驗(yàn)課□習(xí)題課□其他□課時(shí)安排3授課題目(教學(xué)章、節(jié)或主題):制作PHP+MYSQL留言板教學(xué)目的、要求(分掌握、熟悉、了解三個(gè)層次):了解設(shè)計(jì)一個(gè)完整程序的流程。掌握HTML部分表單標(biāo)簽的使用與PHP里的頁(yè)面相互調(diào)用掌握PHP接收參數(shù)的幾種方式及提交表單Javascript驗(yàn)證教學(xué)重點(diǎn)及難點(diǎn):PHP接收參數(shù)的幾種方式及提交表單Javascript驗(yàn)證。教學(xué)基本內(nèi)容及方法手段實(shí)例操作我們的留言板創(chuàng)建表:CREATETABLE`message`(`id`tinyint(1)NOTNULLauto_increment,`user`varchar(25)NOTNULL,`title`varchar(50)NOTNULL,`content`tinytextNOTNULL,`lastdate`dateNOTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=gbkAUTO_INCREMENT=1con.php//數(shù)據(jù)庫(kù)配置$conn=@mysql_connect("localhost","root","")ordie("連接失敗");mysql_select_db("liuyanban",$conn);mysql_query("setnames'GBK'");add.php//操作文件include("conn.php");if($_POST['submit']){$sql="insertintomessage(id,user,title,content,lastdate)"."values('','$_POST[user]','$_POST[title]','$_POST[content]',now())";mysql_query($sql);echo"發(fā)表成功";}?><formaction="add.php"method="post">用戶:<inputtype="text"size="10"name="user"/><br>標(biāo)題:<inputtype="text"name="title"/><br>內(nèi)容:<textareaname="content"></textarea><br><inputtype="submit"name="submit"value="發(fā)布留言"/></form>list.php//列表文件<?phpinclude("conn.php");?><tablewidth=500border="0"align="center"cellpadding="5"cellspacing="1"bgcolor="#add3ef"><?php$sql="select*frommessage";$query=mysql_query($sql);while($row=mysql_fetch_array($query)){?><trbgcolor="#eff3ff"><td>標(biāo)題:<?=$row['title']?>用戶:<?=$row['user']?></td></tr><trbgColor="#ffffff"><td>內(nèi)容:<?=$row['content']?></td></tr><?}?></table>Head文件<head><b><ahref="add.php">添加留言</a>|<ahref="list.php">瀏覽留言</a>|<ahref="login.php">登錄</a></b>5、提交表單Javascript驗(yàn)證6、str_replace替換函數(shù)str_replace(被替換的值,替換的值,被替換的內(nèi)容);$content="asfdasfsafasfasdasfasfafasfasfafasfas";echo$content;輸出:asfdasfsafasfasdasfasfafasfasfafasfas如果:$content="asfdasfsafasfasdasfasfafasfasfafasfas";echohtmtocode($content);functionhtmtocode($content){ $content=str_replace("\n","<br>",str_replace(""," ",$content)); return$content;}7、htmlspecialchars格式化html主要功能是將HTML格式化,防止在輸出html時(shí)被瀏覽器執(zhí)行8、md5加密函數(shù)md5(加密對(duì)象)9、COOKIE的使用和登陸作業(yè)、討論題、思考題:設(shè)計(jì)一個(gè)留言板課后小結(jié):本節(jié)介紹了設(shè)計(jì)一個(gè)完整程序的流程,HTML部分表單標(biāo)簽的使用,PHP里的頁(yè)面相互調(diào)用,接收參數(shù)的幾種方式,提交表單Javascript驗(yàn)證,str_replace替換函數(shù)。講解了htmlspecialchars格式化html,md5加密函數(shù)與COOKIE的使用和登陸。《ASP動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)》課程教案授課班級(jí)15級(jí)淘寶班課次4授課方式理論課?討論課□實(shí)驗(yàn)課□習(xí)題課□其他□課時(shí)安排3授課題目(教學(xué)章、節(jié)或主題):PHP+MYSQL分頁(yè)原理與PHP上傳原理及應(yīng)用及文件操作教學(xué)目的、要求(分掌握、熟悉、了解三個(gè)層次):了解SQL語(yǔ)句中的limit用法與學(xué)習(xí)分頁(yè)的一種公式。掌握FORM標(biāo)簽enctype屬性與$_FILES系統(tǒng)函數(shù)掌握move_uploaded_file函數(shù)與is_uploaded_file函數(shù)了解PHP部分文件操作函數(shù)與unlink()rmdir()刪除函數(shù)教學(xué)重點(diǎn)及難點(diǎn):分頁(yè)公式與文件上傳原理教學(xué)基本內(nèi)容及方法手段1、SQL語(yǔ)句中的limit用法SELECT*FROMtable……limit開(kāi)始位置,操作條數(shù)SELECT*FROMtable……limit0,20SELECT*FROMtable……limit10,202、學(xué)習(xí)分頁(yè)的一種公式(1)分頁(yè)原理所謂分頁(yè)顯示,也就是講數(shù)據(jù)庫(kù)中的結(jié)果集,一段一段顯示出來(lái)(2)需要的條件怎么分段,當(dāng)前在第幾段(每頁(yè)有幾條,當(dāng)前再第幾頁(yè))前10條記錄:select*fromtablelimit0,10第11至20條記錄:select*fromtablelimit10,10第21至30條記錄:select*fromtablelimit20,10(3)得到公式(當(dāng)前頁(yè)數(shù)-1)X每頁(yè)條數(shù),每頁(yè)條數(shù)Select*fromtablelimit($1)*$PageSize,$PageSize3、parse_url()解析URL函數(shù)parse_url()是講URL解析成有固定鍵值的數(shù)組的函數(shù)arg=value#anchor");print_r($ua);結(jié)果:Array([scheme]=>http//協(xié)議[host]=>hostname//域名[user]=>username//用戶名[pass]=>password//密碼[path]=>/path//路徑[query]=>arg=value//取得的值[fragment]=>anchor//)4、$_SERVER["REQUEST_URI"]函數(shù)//除域名以外的值預(yù)定義服務(wù)器變量的一種,所有$_SERVER開(kāi)頭的都叫做預(yù)定義的服務(wù)器變量REQUEST_URI的作用是取得的當(dāng)前URL,也就除域名外后面完整的地址路徑。/home.php?id=23&cid=22Echo$_SERVER["REQUEST_URI"]結(jié)果為:/home.php?id=23&cid=22簡(jiǎn)單分頁(yè)$pagesize=5;$sql="select*frommessagelimit5,$pagesize";$query=mysql_query($sql);while($row=mysql_fetch_array($query)){echo"<hr><b>".$row['user']."|".$row['title'];}分頁(yè)實(shí)例/*分頁(yè)程序*/include("conn.php");include("head.php");$pagesize=10;//每頁(yè)需要顯示幾條信息$url=$_SERVER["REQUEST_URI"];//顯示文件目錄$url=parse_url($url);//把地址分析出來(lái),分析成有固定鍵值的數(shù)組。$url=$url['path'];//echo$url;取出翻頁(yè)的地址$numq=mysql_query("select*frommessage");//查詢出所有記錄。$num=mysql_num_rows($numq);//記錄總條數(shù)//echo$num;//查看結(jié)果if($_GET['page'])//對(duì)page的判斷 { $pageval=$_GET['page']; $page=($pageval-1)*$pagesize;//得出page的值 $page.=','; }if($num>$pagesize){ if($pageval<=1)$pageval=1; echo"共$num條"."<ahref=$url?page=".($pageval-1).">上一頁(yè)</a><ahref=$url?page=".($pageval+1).">下一頁(yè)</a>";}$sql="select*frommessagelimit$page$pagesize";$query=mysql_query($sql);while($row=mysql_fetch_array($query)){echo"<hr><b>".$row['user']."|".$row['title'];}PHP上傳原理及應(yīng)用1、FORM標(biāo)簽enctype屬性表單中enctype="multipart/form-data"的意思,是設(shè)置表單的MIME編碼。默認(rèn)情況,這個(gè)編碼格式是application/x-www-form-urlencoded(通過(guò)瀏覽器傳遞文件),不能用于文件上傳;只有使用了multipart/form-data(可以傳遞文件,文件是二進(jìn)制編碼格式),才能完整的傳遞文件數(shù)據(jù)。<formaction=""enctype="multipart/form-data"method="post"name="upform">上傳文件:<inputname="upfile"type="file"><inputtype="submit"value="上傳"></form>2、$_FILES系統(tǒng)函數(shù)//將文件轉(zhuǎn)換為數(shù)組$_FILES['myFile']['name']客戶端文件的原名稱。$_FILES['myFile']['type']文件的MIME類型,例如"image/gif"。image/jpgimage/jpegimage/pngimage/pjpegimage/gifimage/bmpimage/x-pngapplication/x-zip-compressed

……$_FILES['myFile']['size']已上傳文件的大小,單位為字節(jié)。$_FILES['myFile']['tmp_name']儲(chǔ)存的臨時(shí)文件名,一般是系統(tǒng)默認(rèn)。存儲(chǔ)路徑$_FILES['myFile']['error']該文件上傳相關(guān)的錯(cuò)誤代碼。0;文件上傳成功。1;超過(guò)了文件大小php.ini中。2;超過(guò)了文件大小或MAX_FILE_SIZE選項(xiàng)指定的值。3;文件只有部分被上傳。4;沒(méi)有文件被上傳。5;上傳文件大小為0。3、move_uploaded_file函數(shù)//上傳后移動(dòng)文件到目標(biāo)位置的函數(shù)move_uploaded_file(臨時(shí)文件,目標(biāo)位置和文件名);is_uploaded_file函數(shù)//判斷上傳MIME類型的文件函數(shù)is_uploaded_file(MIME);上傳文件件實(shí)例<?php//上傳文件判斷if(is_uploaded_file($_FILES['upfile']['tmp_name'])){$upfile=$_FILES['upfile'];//print_r($_FILES['upfile']);測(cè)試結(jié)果$name=$upfile['name'];$type=$upfile['type'];$size=$upfile['size'];$tmp_name=$upfile['tmp_name'];$error=$upfile['error'];//echo$type;//測(cè)試輸出結(jié)果switch($type){ case'image/jpg':$ok=1;break; case'image/jpeg':$ok=1;break; case'image/gif':$ok=1;break; case'image/png':$ok=1;break; case'image/pjpeg':$ok=1;break;}if($ok&&$error==0){ move_uploaded_file($tmp_name,'up/'.$name); echo"上傳成功!";}}?><formaction=""enctype="multipart/form-data"method="post"name="upform">上傳文件:<inputname="upfile"type="file"><inputtype="submit"value="上傳"></form>文件操作1、PHP部分文件操作函數(shù)(fopen,fread,filesize,fwrite,fclose)(1)fopen打開(kāi)文件函數(shù)fopen(路徑和文件名,打開(kāi)方式);R-只讀W-寫(xiě)入A-讀寫(xiě)(2)fread讀取文件內(nèi)容fread(打開(kāi)的文件,結(jié)束位置);字節(jié)為單位(3)filesize讀取文件大小,字節(jié)為計(jì)量單位filesize(路徑和文件名);(4)fwrite寫(xiě)入文件內(nèi)容fwrite(路徑和文件名,寫(xiě)入的內(nèi)容);(5)fclose關(guān)閉打開(kāi)的文件fclose(路徑和文件名);2、unlink()rmdir()刪除函數(shù)unlink()刪除文件函數(shù):unlink(路徑和文件名)rmdir()刪除目錄函數(shù):rmdir(路徑和目錄名)實(shí)例講解:建立一個(gè)模板文件tmp.htm<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML3.2//EN"><html><head><title>標(biāo)題:{title}</title></head><body>此新聞的內(nèi)容:{content}</body></html>生成文件wenjiancaozuo.php$fp=fopen("tmp.htm","r");//只讀打開(kāi)模板$str=fread($fp,filesize("tmp.htm"));//讀取模板中的內(nèi)容分//echo$str;測(cè)試讀取結(jié)果$str=str_replace("{title}","新標(biāo)題",$str);$str=str_replace("{content}","新內(nèi)容",$str);//替換內(nèi)容fclose($fp);$handle=fopen('news.html','w');fwrite($handle,$str);fclose($handle);帶循環(huán)的生成批文件$con=array(array('新聞標(biāo)題','新聞內(nèi)容'),array('新聞標(biāo)題2','新聞內(nèi)容2'),array('新聞標(biāo)題3','新聞內(nèi)容3'));foreach($conas$id=>$val){$title=$val[0];$content=$val[1];$path=$id.'.htm';$fp=fopen("tmp.htm","r");//只讀打開(kāi)模板$str=fread($fp,filesize("tmp.htm"));//讀取模板中的內(nèi)容分//echo$str;測(cè)試讀取結(jié)果$str=str_replace("{title}","新標(biāo)題",$str);$str=str_replace("{content}","新內(nèi)容",$str);//替換內(nèi)容fclose($fp);$handle=fopen($path,'w');fwrite($handle,$str);fclose($handle);echo"生成成功";}刪除文件unlink('1.htm');作業(yè)、討論題、思考題:制作一個(gè)留言板設(shè)計(jì)分頁(yè)與文件上傳課后小結(jié):本節(jié)介紹了SQL語(yǔ)句中的limit用法與學(xué)習(xí)分頁(yè)的一種公式,parse_url()解析URL函數(shù),$_SERVER["REQUEST_URI"],F(xiàn)ORM標(biāo)簽enctype屬性,$_FILES系統(tǒng)函數(shù)講解了文件操作函數(shù)move_uploaded_file函數(shù),is_uploaded_file函數(shù),PHP部分文件操作函數(shù)(fopen,fread,filesize,fwrite,fclose),unlink()rmdir()刪除函數(shù)?!禔SP動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)》課程教案授課班級(jí)15級(jí)淘寶班課次5授課方式理論課?討論課□實(shí)驗(yàn)課□習(xí)題課□其他□課時(shí)安排3授課題目(教學(xué)章、節(jié)或主題):面向?qū)ο箝_(kāi)發(fā)的學(xué)習(xí)(一)教學(xué)目的、要求(分掌握、熟悉、了解三個(gè)層次):了解什么是面向?qū)ο螅裁词穷惖母拍钫莆帐褂肅LASS創(chuàng)建一個(gè)類及類的成員屬性和成員方法,對(duì)象中的$this關(guān)鍵字掌握使用new函數(shù)對(duì)象實(shí)例化,創(chuàng)建一個(gè)和多個(gè)對(duì)象掌握初始化對(duì)象__construct()和析構(gòu)函數(shù)__destruct()了解封裝關(guān)鍵字:public,protected,private及封裝相關(guān)函數(shù):__set(),__get()熟悉繼承關(guān)鍵字:extends,PHP繼承的規(guī)則,基類方法重載和父類方法訪問(wèn)掌握抽象方法和抽象類的定義,抽象類和方法使用規(guī)則教學(xué)重點(diǎn)及難點(diǎn):CLASS創(chuàng)建一個(gè)類及類的成員屬性和成員方法,對(duì)象中的$this關(guān)鍵字與new函數(shù)對(duì)象實(shí)例化,創(chuàng)建一個(gè)和多個(gè)對(duì)象。初始化對(duì)象__construct()和析構(gòu)函數(shù)__destruct()。教學(xué)基本內(nèi)容及方法手段1、什么是面向?qū)ο螅裁词穷惼鸪?,“面向?qū)ο蟆笔菍V冈诔绦蛟O(shè)計(jì)中采用封裝、繼承、抽象等設(shè)計(jì)方法??墒?,這個(gè)定義顯然不能再適合現(xiàn)在情況。面向?qū)ο蟮乃枷胍呀?jīng)涉及到軟件開(kāi)發(fā)的各個(gè)方面。如,面向?qū)ο蟮姆治觯∣OA,ObjectOrientedAnalysis),面向?qū)ο蟮脑O(shè)計(jì)(OOD,ObjectOrientedDesign)、以及我們經(jīng)常說(shuō)的面向?qū)ο蟮木幊虒?shí)現(xiàn)(OOP,ObjectOrientedProgram)。傳統(tǒng)開(kāi)發(fā)方法存在問(wèn)題1.軟件重用性差,2.軟件可維護(hù)性差,3.無(wú)很好的擴(kuò)展性面向?qū)ο蟮囊?.抽象性,2.封裝性,3.共享性,4.強(qiáng)調(diào)對(duì)象結(jié)構(gòu)而不是程序結(jié)構(gòu)面向?qū)ο蟮娜筇攸c(diǎn)(封裝,繼承,多態(tài))缺一不可什么是類我們可以理解成一個(gè)功能集合菜單,我們通過(guò)類來(lái)實(shí)現(xiàn)生成我們的方法2、使用CLASS創(chuàng)建一個(gè)類class方法名{……}3、類的成員屬性和成員方法classMyPc{public$name;var$price;functionvod(){return"PHP100視頻教程";}}4、使用new函數(shù)對(duì)象實(shí)例化new對(duì)象名(參數(shù))例:classMyPc{ var$key;//public$key等價(jià) public$name; functionvod() { echo"面向?qū)ο髮W(xué)習(xí)"; }}$pc1=newMyPc();$pc1->key="php";//訪問(wèn)成員屬性echo$pc->key;$pc1->vod();//調(diào)用成員方法5、創(chuàng)建一個(gè)和多個(gè)對(duì)象創(chuàng)建一個(gè)和多個(gè)對(duì)象我們只需要多次使用new函數(shù),進(jìn)行對(duì)類的實(shí)例化類對(duì)象classMyPc{public$name;public$price;functionvod(){return"PHP學(xué)習(xí)教材";}……}$pc1=newMyPc();$pc2=newMyPc();$pc3=newMyPc();6、對(duì)象中的$this關(guān)鍵字$this關(guān)鍵字是用來(lái)訪問(wèn)當(dāng)前對(duì)象中的對(duì)象屬性和對(duì)象方法的系統(tǒng)變量classMyPc{public$name;public$price;functionvod(){$this->name;}……$this->vod();……}我們可以理解為$this是在對(duì)象中特殊的一種使用構(gòu)造函數(shù)和變量的方法。$this僅能在當(dāng)前對(duì)象中使用classMyPc{ public$name; functionvod() { echo$this->name.",播放電影"."<br>"; } functiongame() { echo$this->vod()."玩游戲"; }}$pc1=newMyPc();$pc1->name="家用電腦!";//訪問(wèn)成員屬性$pc1->vod();//調(diào)用成員方法$pc2=newMyPc();$pc2->name="公司電腦!";$pc2->game()7、初始化對(duì)象__construct()我們?cè)趧?chuàng)建一個(gè)類有時(shí)候需要初始化一些操作,這個(gè)時(shí)候我們需要使用初始化函數(shù),在PHP5中有兩種初始化方法。1、原PHP4中我們需要建立一個(gè)與類名稱相同的一個(gè)對(duì)象方法:若類改名字則內(nèi)部初始化,也要改名字。2、在PHP5中繼承了PHP4但為了更好的針對(duì)面向?qū)ο箝_(kāi)發(fā)有了固定函數(shù)。classMyPc{functionMyPc(){初始化操作}}classMyPc{function__construct(){初始化操作}}classMyPc{ public$name;public$type; function__construct($name,$type) { $this->name=$name; $this->type=$type; } functionvod() { echo$this->name.$this->type.",播放電影"."<br>"; } functiongame() { echo$this->vod()."玩游戲"; }}$pc1=newMyPc("家用電腦","臺(tái)式機(jī)");$pc1->vod();//調(diào)用成員方法$pc2=newMyPc("公司電腦","筆記本");$pc2->game();8、析構(gòu)函數(shù)__destruct()//能夠在對(duì)象釋放時(shí)自動(dòng)被調(diào)用的方法被稱為析構(gòu)函數(shù)。PHP4支持析構(gòu)函數(shù),通過(guò)登錄在PHP運(yùn)行終止時(shí)用register_shutdown_function()調(diào)用的函數(shù),只有類似的實(shí)行方法。PHP5正式支持析構(gòu)函數(shù),能夠在類中指定對(duì)象釋放時(shí)的動(dòng)作——可以理解為垃圾回收機(jī)制。當(dāng)對(duì)象內(nèi)部的操作執(zhí)行完畢的時(shí)候,__destruct()被調(diào)用,然后對(duì)象所使用的內(nèi)存被釋放出來(lái)。規(guī)則:后進(jìn)先出classMyPc{……function__destruct(){……}}function__destruct(){ echo"<br>====".$this->name;}輸出結(jié)果====公司電腦

====家用電腦提前釋放:$pc1=null;9、類的封裝和應(yīng)用封裝關(guān)鍵字:public,protected,private封裝是把一些相關(guān)的屬性和行為隱藏起來(lái),從而得到保護(hù)和安全。public表示全局,類內(nèi)部外部子類都可以訪問(wèn);protected表示受保護(hù)的,只有本類或子類或父類中可以訪問(wèn);private表示私有的,只有本類內(nèi)部可以使用;classMyPc{public$name;//全局屬性,任何位置都可以引用protected$price;//保護(hù)屬性,只有本類或子類或父類中可以訪問(wèn)privatefunctionvod()//私有屬性,只有本類內(nèi)部可以使用{$this->name;}……}封裝相關(guān)函數(shù):__set(),__get()某些特定操作的時(shí)候需要訪問(wèn)和賦值封裝的類型,這個(gè)時(shí)候我們就需要其他的函數(shù)幫我們完成這些操作,PHP為我們提供了個(gè)方法名:__set(),__get()__set()取得當(dāng)前類中封裝過(guò)私有屬性或者方法重新執(zhí)行或賦值操作__set($Name,$Value)__get()取得當(dāng)前類中封裝過(guò)屬性或方法并轉(zhuǎn)換成共有屬性實(shí)例講解classMyPc{ private$name; function__construct($name='') { return $this->name=$name; } function__get($name)//間接訪問(wèn)私有變量 { return$this->name."========";//可以改變變量的輸出方式}function__set($n,$v)//設(shè)置私有變量的值{ if($v=="zzh"){$this->$n=$v;}}}$pc1=newMyPc("我的電腦");$pc1->name="fdsgdsgdsg";echo$pc1->name;10、類的繼承和應(yīng)用繼承關(guān)鍵字:extendsPHP類的繼承,我們可以理解成共享被繼承類的內(nèi)容。PHP中使用extends單一繼承的方法!被繼承的類我們叫做父類(基類)繼承者成為子類(派生類)。PHP繼承的規(guī)則依次被繼承,class3擁有class1、class2所以功能和屬性,避免方法和屬性重名。classroot{ functiondayin()//可以用封裝類 protectedfunctiondayin() { return "rootprint<br>"; }} classsonextendsroot{ functiondayin2() {return "sonprint<br>";//return $this->dayin()."sonprint<br>"; }}$p=newson();echo$p->dayin();基類方法重載和父類方法訪問(wèn)因?yàn)閷儆谙蛳吕^承的原理,基類不能使用派生類里內(nèi)容,這個(gè)時(shí)基類的一些方法不能完成我們的一些派生類的功能,我們就可以進(jìn)行方法重載避免了,新建方法帶來(lái)的混亂。方法重載我們也可以理解方法覆蓋,在派生類里使用與基類方法重名的方法名稱執(zhí)行重載,重載時(shí)我們需要調(diào)用原始基類內(nèi)容,再增加新內(nèi)容,我們可以使用基類名::方法名稱 classsonextendsroot{ functiondayin() { return root::dayin()."sonprint<br>"; }11、類的抽象方法和類抽象關(guān)鍵字:abstract抽象就是無(wú)法確切的說(shuō)明,但又有一定的概念或者名稱,在PHP中聲明一個(gè)抽象類或者方法我們需要使用adstract關(guān)鍵字。抽象方法和抽象類的定義一個(gè)類中至少有一個(gè)方法是抽象的,我們稱之為抽象類。所以如果定義抽象類首先定義抽象方法。abstractclassclass1{abstractfunctionfun1();……}1、類中至少有一個(gè)抽象方法。2、抽象方法不允許有{}。3、抽象方法前面必須要加abstract。抽象類和方法使用規(guī)則抽象類的幾個(gè)特點(diǎn):1、不能被實(shí)例化,只能被繼承。2、繼承的派生類當(dāng)中要把所以抽象方法重載才能實(shí)例化。不可實(shí)例化可實(shí)例化abstractclasscl1{abstractfunctionfun1();……}classcl2extendscl1{//繼承functionfun1(){//重載所有抽象方法{}……}abstractclasscl1{ abstractfunctionfun1(); abstractfunctionfun2(); abstractfunctionfun3(); functionok() {}}classcl2extendscl1{ functionfun1()//重載抽象方法{echo"第一個(gè)";} functionfun2() {echo"第二個(gè)";}functionfun3(){echo"第三個(gè)";}}$p=newcl2();$p->fun1();作業(yè)、討論題、思考題:建立一個(gè)類,定義三個(gè)屬性和三個(gè)方法課后小結(jié):本節(jié)課介紹了什么是面向?qū)ο?,什么是類,使用CLASS創(chuàng)建一個(gè)類,類的成員屬性和成員方法,使用new函數(shù)對(duì)象實(shí)例化。創(chuàng)建一個(gè)和多個(gè)對(duì)象,對(duì)象中的$this關(guān)鍵字,初始化對(duì)象__construct(),析構(gòu)函數(shù)__destruct()。講解了封裝關(guān)鍵字:public,protected,private,封裝相關(guān)函數(shù):__set(),__get(),繼承關(guān)鍵字:extends,PHP繼承的規(guī)則,基類方法重載和父類方法訪問(wèn),抽象關(guān)鍵字:abstract,抽象方法和抽象類的定義,抽象類和方法使用規(guī)則。

《ASP動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)》課程教案授課班級(jí)15級(jí)淘寶班課次6授課方式理論課?討論課□實(shí)驗(yàn)課□習(xí)題課□其他□課時(shí)安排3授課題目(教學(xué)章、節(jié)或主題):PHP面向?qū)ο箝_(kāi)發(fā)的學(xué)習(xí)(二)與制作自己的PHP+MYSQL的類教學(xué)目的、要求(分掌握、熟悉、了解三個(gè)層次):了解關(guān)鍵字:final,self,static,const,interface,implements,instanceof。掌握多態(tài)的介紹與優(yōu)勢(shì)、多態(tài)的簡(jiǎn)單應(yīng)用。熟悉對(duì)象描述的配置,對(duì)象方法的異常處理及克隆對(duì)象的應(yīng)用、自動(dòng)載入對(duì)象的方法。熟悉常用MYSQL函數(shù)、使用類封裝常用SQL操作,簡(jiǎn)化代碼及認(rèn)識(shí)面向?qū)ο笤陂_(kāi)發(fā)中的重要作用。教學(xué)重點(diǎn)及難點(diǎn):MYSQL函數(shù)、使用類封裝常用SQL操作,簡(jiǎn)化代碼及認(rèn)識(shí)面向?qū)ο笤陂_(kāi)發(fā)中的重要作用與關(guān)鍵字的應(yīng)用。教學(xué)基本內(nèi)容及方法手段類中常用關(guān)鍵字1、關(guān)鍵字:final用來(lái)定義類和方法的一個(gè)重要關(guān)鍵字,當(dāng)定義類的時(shí)候該類將不能被繼承,當(dāng)用來(lái)定義方法的時(shí)候該方法將不能被重載finalclassclass1{//該類將不能被繼承……finalfunctionfun1(){ //該方法將不能被重載……}……}實(shí)例講解finalclassMyPc{//加上final后就不能被繼承 public$name='我的電腦'; finalfunctionpower()//加上final后就不能重載 { echo$this->name.",電腦打開(kāi)中"; }}classmyextendsMyPc{ // functionpower(){//重載抽象方法//echoMyPc::power()."***************";//}}$p=newmy();$p->power();2、關(guān)鍵字:self用來(lái)用類訪問(wèn)當(dāng)前類中的內(nèi)容的關(guān)鍵字,類似與$this關(guān)鍵字,但$this是需要類實(shí)例化以后才可以使用,self可以直接訪問(wèn)當(dāng)前類中的內(nèi)部成員self::類內(nèi)部成員(屬性或者方法)等價(jià)與類名::類內(nèi)部成員(屬性或者方法)注意:因?yàn)闆](méi)有實(shí)例化類訪問(wèn)內(nèi)部屬性或者方法是沒(méi)有意義的,所以self一般用來(lái)訪問(wèn)類中的:靜態(tài)成員,常量,或者其他定義內(nèi)容。3、關(guān)鍵字:static用來(lái)定義類的靜態(tài)屬性或方法,可以在類未被實(shí)例化時(shí)使用,靜態(tài)屬性單獨(dú)占用內(nèi)存而不會(huì)因創(chuàng)建多個(gè)對(duì)象時(shí)而導(dǎo)致同樣的方法或者屬性重復(fù)占用。classclass1{static$name;staticfunctionfun1(){//靜態(tài)方法內(nèi)部禁止出現(xiàn)非靜態(tài)內(nèi)容……}

}類內(nèi)部訪問(wèn)靜態(tài)成員類名稱::靜態(tài)成員self::靜態(tài)成員類外部訪問(wèn)靜態(tài)成員類名稱::靜態(tài)成員實(shí)例講解finalclassMyPc{//加上final后就不能被繼承static$name='我的電腦'; staticfunctionpower()//靜態(tài)方法,使用$this關(guān)鍵字會(huì)出錯(cuò) { //echo$this->name.",電腦打開(kāi)中";this關(guān)鍵字就不能使用 echoself::$name.",電腦打開(kāi)中";//用self方法訪問(wèn)靜態(tài)屬性。 } }//echoMyPc::$name;//靜態(tài)屬性可以被訪問(wèn)輸出//MyPc::$name="你的電腦";//靜態(tài)屬性可以被訪問(wèn)修改$p=newMyPc();$p->power();4、關(guān)鍵字:const用來(lái)定義類中的常量,類似PHP外部定義常量的關(guān)鍵字define();Const只能修飾類當(dāng)中的成員屬性!classclass1{constNAME;functionfun1(){……}

}實(shí)例講解finalclassMyPc{constNAME='我的電腦'; staticfunctionpower() { echoself::NAME.",電腦打開(kāi)中"; } }$p=newMyPc();$p->power();注意事項(xiàng):1、建議大寫(xiě)常量2、常量不使用$符號(hào)類中接口的應(yīng)用接口的介紹與創(chuàng)建關(guān)鍵字:interface接口:一種成員屬性全部為抽象的特殊抽象類,在程序中同為規(guī)范的作用。抽象類1、類中至少有一個(gè)抽象方法2、抽象方法前需加abstract接口1、類中全部為抽象方法2、抽象方法前不用加abstract3、接口抽象方法屬性為public4、成員屬性必須為常量共同點(diǎn):1、本身都不能被實(shí)例化,必須被繼承或者引用。2、繼承或者引用后,需要把所有抽象方法重載方可使用。接口有自己的創(chuàng)建關(guān)鍵字:interface與普通類的創(chuàng)建類似interfacedemo{//聲明接口類constNAME="名字";//對(duì)象屬性必須為常量functionFun1();functionFun2();//對(duì)象方法全部為抽象方法,前面無(wú)須加abstract}實(shí)例講解interfacedemo{ constNAME="名稱";//聲明一個(gè)變量試試 functionfun1();//前加一個(gè)abstract試試,建一個(gè)普通的方法試試 }2、接口的引用與規(guī)范關(guān)鍵字:implements接口引用區(qū)別與之前我們的學(xué)的類繼承關(guān)鍵字extends,繼承只能是單一性,而接口可以使用關(guān)鍵字:implements多個(gè)引用并用逗號(hào),分開(kāi)。設(shè)已有接口demo,demo2,demo3父類root1、普通類引用接口例子:classmypcimplementsdemo,demo2,demo3{……}2、抽象類引用接口例子:abstractclassmypcimplementsdemo,demo2,demo3{……}3、繼承父類引用接口并存例子:classmypcextendsrootimplementsdemo,demo2,demo3{……}//先繼承后接口,單繼承多接口4、接口與接口繼承:interfacedemo3extendsdemo{……}類中多態(tài)的應(yīng)用1、多態(tài)的介紹與優(yōu)勢(shì)介紹:多態(tài)性是繼抽象和繼承后,面向?qū)ο笳Z(yǔ)言的第三個(gè)特征。從字面上理解,多態(tài)的意思是“多種形態(tài)”,簡(jiǎn)單來(lái)說(shuō),多態(tài)是具有表現(xiàn)多種形態(tài)的能力的特征,在OO中是指“語(yǔ)言具有根據(jù)對(duì)象的類型以不同方式處理。優(yōu)勢(shì):OOP的模式并不僅僅是把很多函數(shù)和功能集合起來(lái),目的而是使用類,繼承,多態(tài)的方式描述我們生活中的一種情況。從而使得我們的代碼更具有“物”的意義。幫助我們減少一些重復(fù)性的代碼和條件語(yǔ)句的判斷。2、運(yùn)算符:instanceofPHP一個(gè)類型運(yùn)算符。instanceof用來(lái)測(cè)定一個(gè)給定的對(duì)象是否來(lái)自指定的對(duì)象類。classA{}classB{}$thing=newA;if($thinginstanceofA){//判斷變量$thing是否來(lái)自類Aecho'A';}if($thinginstanceofB){echo'B';}3、多態(tài)的簡(jiǎn)單應(yīng)用interfacemyusb{ functiontype(); functionalert();}classzipimplementsmyusb{ functiontype(){ echo"2.0"; } functionalert() {echo"正在檢查————U盤(pán)驅(qū)動(dòng)";}}classmp3implementsmyusb{ functiontype(){ echo"1.0"; } functionalert() {echo"正在檢查————Mp3盤(pán)驅(qū)動(dòng)";}}classmypc{ functionpcusb($what) { $what->type()."<br>"; $what->alert(); } }$p=newmypc();$zip=newzip();$mp3=newmp3();$p->pcusb($mp3);//插上不同的設(shè)備,就有不同的輸出總結(jié)篇對(duì)象描述的配置方法名__tostring()我們可以直接打印對(duì)象句柄,從而獲得該方法的基本信息或其他內(nèi)容。classMy{function__tostring(){echo"我所要顯示的內(nèi)容";}}$p=newMy();echo$p;輸出結(jié)果:我所要顯示的內(nèi)容2、對(duì)象方法的異常處理方法名__call($funname,$arr_value)調(diào)用一些不存在的對(duì)象方法的異常處理,使程序繼續(xù)正常運(yùn)行。classMy{function__call($n,$v){echo"錯(cuò)誤的方法名".$n;echo"錯(cuò)誤的參數(shù)".Print_r($v);//因?yàn)閰?shù)會(huì)有多個(gè)所要用數(shù)組的方式保存}//打印的時(shí)候也要就用print_r輸出。}克隆對(duì)象的應(yīng)用方法名__clone()關(guān)鍵字clone通過(guò)克隆的方式我們可以在內(nèi)存中生成兩個(gè)一樣的對(duì)象或升級(jí)原對(duì)象。classMy{function__clone(){echo"克隆時(shí)自動(dòng)調(diào)用的函數(shù)";}}$a=newMy()$b=$a;//內(nèi)存中只有一個(gè)對(duì)象$a=newMy()$b=clone$a;//內(nèi)存中會(huì)有兩個(gè)對(duì)象自動(dòng)載入對(duì)象的方法方法名__autoload()快速取得對(duì)象名稱并自動(dòng)載入進(jìn)當(dāng)前頁(yè)面function__autol

溫馨提示

  • 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)論