PHP動態(tài)網(wǎng)站開發(fā)項目教程課件 項目4 拉取組織和人員信息_第1頁
PHP動態(tài)網(wǎng)站開發(fā)項目教程課件 項目4 拉取組織和人員信息_第2頁
PHP動態(tài)網(wǎng)站開發(fā)項目教程課件 項目4 拉取組織和人員信息_第3頁
PHP動態(tài)網(wǎng)站開發(fā)項目教程課件 項目4 拉取組織和人員信息_第4頁
PHP動態(tài)網(wǎng)站開發(fā)項目教程課件 項目4 拉取組織和人員信息_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

項目4

拉取組織和人員信息項目知識要點學(xué)時4.1函數(shù)介紹4.1.1什么是函數(shù)4.1.2函數(shù)的分類4.2自定義函數(shù)4.2.1函數(shù)的定義與調(diào)用4.2.2函數(shù)的參數(shù)和返回值4.3函數(shù)與變量作用域4.3.1局部變量和全局變量4.3.2靜態(tài)變量與變量生命周期4.4函數(shù)參數(shù)傳遞4.4.1參數(shù)的傳遞類型4.4.2參數(shù)個數(shù)變量4.4.3變量函數(shù)4.4.4匿名函數(shù)4.4.5回調(diào)函數(shù)4.4.6遞歸函數(shù)4項目知識要點知識能力目標(biāo)學(xué)時【知識目標(biāo)】了解函數(shù)定義的基本方法理解變量作用域掌握函數(shù)參數(shù)傳遞的各種形式【能力目標(biāo)】培養(yǎng)歸納程序中相似功能點的能力,學(xué)會判斷是否需要定義函數(shù)能夠根據(jù)需求定義通用函數(shù)能夠掌握遞歸函數(shù)、變量函數(shù)、回調(diào)函數(shù)、匿名函數(shù)等進階函數(shù)的定義方法和使用技巧【素質(zhì)目標(biāo)】培養(yǎng)規(guī)范編寫和調(diào)用函數(shù)的良好習(xí)慣強化代碼簡潔化和可讀性意識,培養(yǎng)高質(zhì)量編程的職業(yè)素養(yǎng)和工程思維4項目實訓(xùn)2項目目標(biāo)4.1.1什么是函數(shù)函數(shù)是封裝起來的用于實現(xiàn)特定功能的代碼塊。通俗地說,函數(shù)是用來完成某個或某組特定任務(wù)的、可重復(fù)使用的代碼塊,就像搭建房屋的積木一樣,可以重復(fù)使用,需要時可以直接調(diào)用。函數(shù)可以使程序更加模塊化,增強代碼可讀性,減少代碼重復(fù),優(yōu)化程序結(jié)構(gòu)。4.1.2函數(shù)的分類01內(nèi)置函數(shù)(Built-inFunction)內(nèi)置函數(shù)(Built-inFunction)是PHP語言本身提供的,用戶可以直接在代碼中調(diào)用而無須自行定義的函數(shù)。這些函數(shù)提供了豐富的功能和特性,用于處理字符串、數(shù)組、文件、圖像、時間日期和進行數(shù)據(jù)庫連接等各種常見的編程任務(wù)。02自定義函數(shù)(User-DefinedFunction)自定義函數(shù)(User-DefinedFunction)是開發(fā)者根據(jù)具體需求,在PHP腳本中自行定義和編寫的函數(shù)。這些函數(shù)不是PHP語言本身提供的,而是由開發(fā)者根據(jù)實際需要創(chuàng)建的。自定義函數(shù)允許開發(fā)者將重復(fù)的代碼塊封裝成獨立的函數(shù),以便在需要時直接調(diào)用,從而提高代碼的可讀性、可維護性和復(fù)用性。4.2.1函數(shù)的定義與調(diào)用函數(shù)定義的基本格式如下:函數(shù)的定義01OPTIONfunction函數(shù)名(參數(shù)1,參數(shù)2,…,參數(shù)n=默認值){

函數(shù)體;return返回值;}其中,function為PHP關(guān)鍵字,表示函數(shù)定義的開始。函數(shù)名應(yīng)為合法的PHP標(biāo)識符。4.2.1函數(shù)的定義與調(diào)用函數(shù)的定義有以下規(guī)則。函數(shù)名首字符不能使用“$”符號。不能使用PHP關(guān)鍵字作為函數(shù)名。避免使用與PHP內(nèi)置函數(shù)相同的名稱來定義自己的函數(shù),因為這會導(dǎo)致沖突。在一個PHP腳本(含包含文件,下文提到)內(nèi)不能重復(fù)聲明同樣的函數(shù)名。函數(shù)名不區(qū)分大小寫,盡量使用有意義的名稱。按照PHP的命名慣例,函數(shù)名通常使用小寫字母,并在單詞之間使用下畫線(_)進行分隔,如calculate_sum()。另外,也可使用駝峰命名法,如calculateSum()。PHP允許定義匿名函數(shù),即沒有指定名稱的函數(shù)。匿名函數(shù)經(jīng)常用作回調(diào)函數(shù),它可以很方便地定義在需要它們的上下文中,而無須為其單獨命名。在PHP中,函數(shù)定義時可以不指定參數(shù),也可以有多個參數(shù),還可以為參數(shù)設(shè)置默認值。在函數(shù)體中,可在任意位置使用return語句從函數(shù)中返回。4.2.1函數(shù)的定義與調(diào)用函數(shù)的調(diào)用函數(shù)通過函數(shù)名來調(diào)用并獲得返回值。若函數(shù)參數(shù)有設(shè)置的默認值,則調(diào)用時可省略該參數(shù),此時將自動使用參數(shù)的默認值。例如:02OPTIONechopower(3); //調(diào)用函數(shù),省略了默認參數(shù),將函數(shù)值輸出echopower(2,3); //調(diào)用函數(shù),同時指定了默認參數(shù)的值,將函數(shù)值輸出power(5); //調(diào)用函數(shù),未使用函數(shù)值函數(shù)調(diào)用和函數(shù)定義可以在同一個PHP文件中,也可分別放在不同的文件中。當(dāng)在同一個PHP文件中時,函數(shù)調(diào)用和函數(shù)定義的先后順序不會影響程序執(zhí)行。但為了代碼的可讀性,通常建議將函數(shù)定義放在函數(shù)調(diào)用之前。如果函數(shù)定義在其他的PHP文件中,則必須在調(diào)用函數(shù)之前使用include、include_once、require或require_once引入該文件。4.2.1函數(shù)的定義與調(diào)用【例4-1】使用自定義函數(shù)。(源代碼:\test\chapter4\test1.php,test1_1.php)<?phpfunctionstrpower($n,$p=2){//返回字符串$n連接$p次構(gòu)成的新字符串

$s='';for($i=1;$i<=$p;$i++)$s.=$n;return$s;}在test1_1.php中定義了一個字符串運算函數(shù)strpower(),代碼如下。<?phpfunctionpower($n,$p=2){//返回$n的$p次方

$s=1;for($i=1;$i<=$p;$i++)$s*=$n;return$s;}include_once'test1_1.php';echopower(3),'<br>';echopower(2,3),'<br>';echostrpower(3),'<br>';echostrpower(2,3),'<br>';echostrpower("abc"),'<br>';echostrpower("abc",3),'<br>';主文件test1.php中定義了算術(shù)運算函數(shù)power(),并調(diào)用power()和strpower()函數(shù),代碼如下。4.2.1函數(shù)的定義與調(diào)用例4.1的代碼在瀏覽器中的顯示結(jié)果如圖4.1所示。圖4.1例4.1的代碼在瀏覽器中的顯示結(jié)果4.2.2函數(shù)的參數(shù)和返回值函數(shù)的參數(shù)01OPTION定義函數(shù)時設(shè)置的參數(shù)稱為形式參數(shù)(簡稱形參,可設(shè)置默認值),調(diào)用函數(shù)時給定的參數(shù)稱為實際參數(shù)(簡稱實參)。多個參數(shù)需用“,”

隔開。如果函數(shù)定義時設(shè)置了形參,除非形參帶有默認值,否則調(diào)用函數(shù)時必須傳入實參;如果函數(shù)定義時沒有設(shè)置形參,則調(diào)用函數(shù)時可以不傳實參。調(diào)用函數(shù)時傳入的參數(shù)必須按照定義的順序從前到后傳入。如果形參A帶默認值,形參B不帶默認值,且A在B的前面,調(diào)用函數(shù)時必須傳A的實參,否則會造成傳參錯誤。所以在實際開發(fā)中,通常將帶默認值的形參放在不帶默認值的形參之后。4.2.2函數(shù)的參數(shù)和返回值函數(shù)的返回值函數(shù)通過return語句向調(diào)用它的代碼返回一個值,以下是需要注意的地方。02OPTION函數(shù)每次調(diào)用只能通過return語句返回單個值,遇到return語句后函數(shù)會立即結(jié)束執(zhí)行。如果函數(shù)沒有return語句或return語句后面沒有指定返回值(或返回值為null),那么該函數(shù)將返回null。返回值可以是數(shù)字、字符串、數(shù)組、對象或函數(shù)??梢灾付ǚ祷刂殿愋?,其寫法如例4.2所示。4.2.2函數(shù)的參數(shù)和返回值【例4-2】指定函數(shù)返回值類型。(源代碼:\test\chapter4\test2.php)<?phpfunctiongetNumber1():int{return10;//return"10";也可以,因為PHP是弱語言,數(shù)字形式的字符類型會轉(zhuǎn)化為整型或浮點型}functiongetNumber2():float{return"1.99";//return1.99;也可以}functiongetNumber3():int{return"test";//報錯,返回值與函數(shù)指定的返回值類型不符}echo"我是getNumber1()的返回值:".getNumber1()."<br>";echo"我是getNumber2()的返回值:".getNumber2()."<br>";echo"我是getNumber3()的返回值:".getNumber3();4.2.2函數(shù)的參數(shù)和返回值例4.2的代碼在瀏覽器中的顯示結(jié)果如圖4.2所示。圖4.2例4.2的代碼在瀏覽器中的顯示結(jié)果4.3.1局部變量和全局變量通常,函數(shù)內(nèi)部定義的變量為局部變量,其作用域只能在函數(shù)內(nèi)部。函數(shù)參數(shù)也是局部變量。函數(shù)外部定義的變量為全局變量,其作用域為當(dāng)前PHP文件。例如:<?php$var=100; //聲明一個全局變量$varfunctiontest(){echo$var; //引用一個局部變量$var}test();test()函數(shù)中用echo輸出變量$var的值。在調(diào)用test()函數(shù)時,會輸出100嗎?答案是否定的。聲明的代碼在運行時會產(chǎn)生一個Notice錯誤,提示變量$var沒有定義。4.3.2靜態(tài)變量與變量生命周期變量生命周期指該變量在內(nèi)存中存在的時間。一般來說,局部變量和全局變量都是動態(tài)變量。動態(tài)變量的生命周期指包含該變量的代碼運行的時間。函數(shù)內(nèi)部的局部變量在函數(shù)調(diào)用時被創(chuàng)建,在函數(shù)調(diào)用結(jié)束后被釋放。全局變量在PHP文件執(zhí)行期間存在,在文件執(zhí)行結(jié)束后被釋放。4.3.2靜態(tài)變量與變量生命周期靜態(tài)變量是特殊的局部變量,用static關(guān)鍵字進行聲明。靜態(tài)變量在第一次調(diào)用函數(shù)時被創(chuàng)建,在函數(shù)調(diào)用結(jié)束后仍保留在內(nèi)存中,下次調(diào)用函數(shù)時可繼續(xù)使用。<?phpfunctiontest1(){static$a=0;//聲明一個靜態(tài)變量,賦初值為0$a++;echo"第$a次調(diào)用test1()函數(shù)<br>";}test1();test1();test1();test1();//$a隨著函數(shù)調(diào)用逐次遞增1,說明靜態(tài)變量在函數(shù)調(diào)用結(jié)束時仍保留在內(nèi)存中【例4-3】指使用靜態(tài)變量,代碼如下。(源代碼:\test\chapter4\test3.php)4.3.2靜態(tài)變量與變量生命周期echo"--------------<br>";functiontest2(){$a=0;//聲明一個一般局部變量,賦初值為0$a++;echo"第$a次調(diào)用test2()函數(shù)<br>";}test2();test2();test2();test2();//$a每次都顯示1,說明一般局部變量在函數(shù)調(diào)用結(jié)束后會被釋放例4.3的代碼在瀏覽器中的顯示結(jié)果如圖4.3所示。圖4.3例4.3的代碼在瀏覽器中的顯示結(jié)果4.4.1參數(shù)的傳遞類型在調(diào)用函數(shù)時,實參和形參之間會發(fā)生參數(shù)傳遞,傳遞類型分為傳值和傳地址。在定義函數(shù)參數(shù)時,在參數(shù)變量名之前使用“&”符號可聲明參數(shù)進行引用傳遞,即將實參的地址傳遞給形參;若未使用“&”符號,則聲明的參數(shù)將獲得實參的值。對于引用傳遞,調(diào)用函數(shù)時只能用變量作為實參。如果實參和形參之間是傳地址,即訪問同一內(nèi)存單元,則在函數(shù)調(diào)用結(jié)束后,可通過實參獲得函數(shù)中形參變量的值。4.4.1參數(shù)的傳遞類型【例4-4】使用傳地址函數(shù),代碼如下。(源代碼:\test\chapter4\test4.php)<?phpfunctiontest($a,&$b){$b=$a*$a;return;}$n=2;$p=3;echo'調(diào)用函數(shù)前:<br>$n=',$n;echo'<br>$p=',$p;test($n,$p);//由于函數(shù)test()的第二個參數(shù)是引用傳遞,調(diào)用時只能使用變量形式,不可直接寫成test($n,3)//實參$p傳遞的是地址,而不是它的值,經(jīng)過函數(shù)計算,函數(shù)形參中$b的值為4,即把實參$p的值修改為4,因為對應(yīng)的內(nèi)存單元的值已發(fā)生改變

echo'<br>調(diào)用函數(shù)后:<br>$n=',$n;echo'<br>$p=',$p;4.4.1參數(shù)的傳遞類型例4.4的代碼在瀏覽器中的顯示結(jié)果如圖4.4所示。圖4.4例4.4的代碼在瀏覽器中的顯示結(jié)果4.4.2參數(shù)個數(shù)變量在使用默認參數(shù)時,調(diào)用函數(shù)時可以省略這些參數(shù)。但需要注意,函數(shù)定義時參數(shù)的個數(shù)是固定的,只是調(diào)用時可以省略有默認值的參數(shù)。PHP支持可變參數(shù)函數(shù),即允許向函數(shù)傳遞個數(shù)不固定的參數(shù),此時函數(shù)可以不聲明參數(shù),在函數(shù)中使用內(nèi)置函數(shù)func_get_args()可以獲得傳入的多個參數(shù)。func_get_args()函數(shù)會返回一個包含傳入?yún)?shù)的數(shù)組。4.4.2參數(shù)個數(shù)變量【例4-5】使用可變參數(shù)函數(shù),代碼如下。(源代碼:\test\chapter4\test5.php)<?phpfunctiontest(){$a=func_get_args();$b=count($a);echo"函數(shù)test()接收到$b個參數(shù):<br>";for($i=0;$i<$b;$i++){var_dump($a[$i]);echo'<br>';}return;}test(1,2.5,"ab","cd");4.4.2參數(shù)個數(shù)變量例4.5的代碼在瀏覽器中的顯示結(jié)果如圖4.5所示。圖4.5例4.5的代碼在瀏覽器中的顯示結(jié)果4.4.3變量函數(shù)變量函數(shù)指將函數(shù)名存儲在變量中,并通過該變量來調(diào)用函數(shù)。當(dāng)變量的值發(fā)生變化時,可調(diào)用不同的函數(shù)。<?phpfunctiontest1($a){return$a+10;}functiontest2($a){return$a+20;}functiontest3($a){return$a+30;}【例4-6】使用變量函數(shù),代碼如下。(源代碼:\test\chapter4\test6.php)$var="test1";echo"調(diào)用$var():",$var(5);echo'<br>';$var="test2";echo"調(diào)用$var():",$var(5);echo'<br>';$var="test3";echo"調(diào)用$var():",$var(5);echo'<br>';4.4.3變量函數(shù)例4.6的代碼在瀏覽器中的顯示結(jié)果如圖4.6所示。圖4.6例4.6的代碼在瀏覽器中的顯示結(jié)果4.4.4匿名函數(shù)在PHP中,匿名函數(shù)(也稱為閉包函數(shù))指沒有指定名稱的函數(shù)。以下是PHP中匿名函數(shù)的基本語法:$greet=function($name){echo"Hello,$name!";};$greet('World');//輸出:Hello,World!匿名函數(shù)也可以捕獲其定義范圍中的變量的值(即閉包特性),其寫法為:$message='Hello';$greet=function($name)use($message){echo"$message,$name!";};$greet('World');//輸出:Hello,World!4.4.4匿名函數(shù)匿名函數(shù)也可以作為參數(shù)傳遞給其他函數(shù),或者作為其他函數(shù)的返回值:functioncreateGreeter($message){returnfunction($name)use($message){echo"$message,$name!";};}$greet=createGreeter('Hello');$greet('World');//輸出:Hello,World!4.4.5回調(diào)函數(shù)01call_user_func(函數(shù)名,回調(diào)函數(shù)參數(shù)1,回調(diào)函數(shù)參數(shù)2,…)第一個參數(shù)為回調(diào)函數(shù)名稱,可以用字符串或變量指定函數(shù)名稱,第二個及之后的參數(shù)指依次傳遞給回調(diào)函數(shù)的參數(shù),多余的參數(shù)會被忽略。02call_user_func_array(函數(shù)名,參數(shù)數(shù)組)它與call_user_func()函數(shù)的區(qū)別在于,回調(diào)函數(shù)的參數(shù)必須放在一個數(shù)組中作為第二個參數(shù)。數(shù)組中多余的參數(shù)會被忽略。4.4.5回調(diào)函數(shù)<?phpfunctiontest1($a,$b){return$a+$b(10);}functiontest2($a){return$a*10;}functiontest3($a,$b){return$a+$b;}echo'test1(5,"test2")=';echotest1(5,"test2"); //直接調(diào)用自定義函數(shù)

echo'<br>echocall_user_func("test1",5,"test2")=';echocall_user_func("test1",5,"test2"); //使用內(nèi)置函數(shù)調(diào)用自定義函數(shù)

echo'<br>test3(10,20)=';echotest3(10,20);echo'<br>call_user_func("test3",10,20)=';echocall_user_func("test3",10,20); //使用內(nèi)置函數(shù)調(diào)用自定義函數(shù)

echo'<br>call_user_func_array("test3",$c)=';ec

溫馨提示

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

評論

0/150

提交評論