溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

PHP整理筆記六自定義函數(shù)

發(fā)布時(shí)間:2020-07-14 19:50:23 來源:網(wǎng)絡(luò) 閱讀:381 作者:菜鳥不菜么 欄目:web開發(fā)

一.標(biāo)準(zhǔn)函數(shù)

 

標(biāo)準(zhǔn)的PHP發(fā)行包中有1000多個(gè)標(biāo)準(zhǔn)函數(shù),這些標(biāo)準(zhǔn)函數(shù)都是系統(tǒng)內(nèi)置的,不需要用戶自己創(chuàng)建而可以直接使用。

<?

              echo md5('123456');   //MD5函數(shù)對字符串進(jìn)行加密處理

?>

 

 

二.自定義函數(shù)

 

PHP內(nèi)置函數(shù)允許和文件進(jìn)行交互、使用數(shù)據(jù)庫、創(chuàng)建圖形,還可以連接其他的服務(wù)器。但是,在實(shí)際工作中,有許多時(shí)候所需要的東西是語言的創(chuàng)建者無法預(yù)見到的。

聲明一個(gè)函數(shù)可以讓我們想內(nèi)置函數(shù)那樣使用自己的代碼。只要簡單地調(diào)用這個(gè)函數(shù)并提供給它必須的參數(shù)。這就意味著,在整個(gè)腳本中,都可以調(diào)用和多次重復(fù)使用相同的函數(shù)。

 

創(chuàng)建函數(shù)

<?

              function functionName() {

                     echo '這是一個(gè)無參無返回自定義函數(shù)';

              }

?>

 

調(diào)用函數(shù)

<?

              functionName();

?>

 

函數(shù)命名

1.函數(shù)名不能和已有的函數(shù)名重名。

2.函數(shù)名只能包含字母、數(shù)字和下劃線。

3.函數(shù)名不能以數(shù)字開頭。

 

包含參數(shù)無返回的函數(shù)調(diào)用

<?

       function functionArea($radius) {

              $area = $radius * $radius * pi();

              echo $area;

       }

      

       functionArea(10);

?>

 

包含參數(shù)有返回的函數(shù)調(diào)用:使用return()語句可以向函數(shù)調(diào)用者返回任意確定值,將程序控制權(quán)返回到調(diào)用者的作用域。

<?

       function functionArea($radius) {

              return $radius * $radius * pi();

       }

      

       echo functionArea(10);

?>

 

包含默認(rèn)參數(shù)的函數(shù)調(diào)用:可以為輸入?yún)?shù)指定默認(rèn)值,在沒有提供其他值的情況下,就會把這個(gè)默認(rèn)值自動賦給該參數(shù)。

<?

       function functionArea($radius=10) {

              return $radius * $radius * pi();

       }

      

       echo functionArea();

?>

 

返回多個(gè)值的函數(shù)調(diào)用:可以通過返回一個(gè)數(shù)組然后使用list()函數(shù)構(gòu)造即可。

<?

       function functionInfo($name,$age,$job) {

              $userInfo = array($name,$age,$job);  //可以用追加的方式比較常用

              return $userInfo;

       }

      

       list($name,$age,$job) = functionInfo('吳祁',19,'學(xué)生');

       echo $name.'今年'.$age.'歲了,目前還是個(gè)'.$job;

?>

 

包含引用傳參的函數(shù)調(diào)用:引用傳遞可以在函數(shù)內(nèi)對參數(shù)的修改在函數(shù)范圍外也能反應(yīng)。

<?

       $prices = 50;

       $tax = 0.5;

       function functionPrices(&$prices,$tax) {

              $prices = $prices + ($prices * $tax);

              $tax = $tax * 2;

       }

      

       functionPrices($prices,$tax);

       echo $prices;

       echo '<br />';

       echo $tax;

?>

 

請注意,函數(shù)調(diào)用將不區(qū)分大小寫,所以調(diào)用functionname()、FunctionName()FUNCTIOINNAME()都是有效的,而且都將返回相同的結(jié)果。為了方便,這里都用小寫。

注意到函數(shù)名稱和變量名稱是不同的,這一點(diǎn)很重要。變量名是區(qū)分大小寫的,所以$Name$name是兩個(gè)不同的變量,但Name()name()則是同一個(gè)函數(shù)。

 

理解作用域

變量的作用域可以控制變量在哪里是可見并且可用的。不同的編程語言有不同的變量作用域規(guī)則。PHP具有相當(dāng)簡單的規(guī)則:

在函數(shù)內(nèi)部聲明的變量作用與是從聲明它們的那條語句開始到函數(shù)末尾。這叫做函數(shù)作用域。這些變量成為局部變量。

在函數(shù)外部聲明的變量作用域是從聲明它們的那條語句開始到文件末尾,而不是函數(shù)內(nèi)部。這叫做全局作用域。這些變量成為全局變量。

特殊的超級全局變量在函數(shù)內(nèi)外部都是可見的。

使用require()include()并不影響作用域。如果這兩個(gè)語句用于函數(shù)內(nèi)部,函數(shù)作用域適用。如果它不在函數(shù)內(nèi)部,全局作用域適用。

關(guān)鍵字“global”可以用來手動指定一個(gè)在函數(shù)中定義或使用的變量具有全局作用域。

通過調(diào)用unset($variable_name)可以手動刪除變量。如果變量被刪除,它就不在參數(shù)所指定的作用域中了。

 

全局變量定義global

<?

       $a = 5;

       function fna() {

              global $a;

              $a = 20;

       }

       fna();

       echo $a;

?>

 

可以通過使用超級全局變量$GLOBAL,可以訪問或改變?nèi)肿饔糜蛑械娜魏巫兞俊?/span>

<?

       $GLOBALS['a'] = 5;

       function fna() {

              $GLOBALS['a'] = 20;

       }

       fna();

       echo $GLOBALS['a'];

?>

 

創(chuàng)建自己的函數(shù)庫

通常將函數(shù)集文件存放在library文件夾里,然后通過文件調(diào)用即可。文件名約定促成可以取名為tool.library.php,tool可以根據(jù)情況來設(shè)定,后面兩個(gè)照抄!

 

三.文件包含

 

為了確保重用性和模塊性,最普遍的方式是把功能組建隔離為單獨(dú)的文件,然后在需要時(shí)重新組裝。PHP提供了四種在應(yīng)用程序中包含文件的語句。

 

include()語句將在其被調(diào)用的位置處判斷并包含一個(gè)文件。包含一個(gè)文件與在該語句所在位置復(fù)制該文件的數(shù)據(jù)具有相同的結(jié)果。

<?

       include 'include.php';

?>

 

include_once()函數(shù)的作用與include()相同,不過它會首先驗(yàn)證是否已經(jīng)包含了該文件。如果包含了該文件,則不再執(zhí)行include_once()。

<?

       include_once 'include.php';

?>

 

require()在很大程度與include()相同,都是將一個(gè)模板文件包含到require()調(diào)用所在的位置。

<?

       require('require.php');

?>

 

require_once()函數(shù)的作用與require()相同,不過require_once()函數(shù)確保文件只包含一次。在遇到require_once()后,后面再試圖包含相同的文件時(shí)都將被忽略。

<?

       require_once('require.php');

?>

 

require()語句和include()語句幾乎是等價(jià)的。二者的差異在于,當(dāng)這兩個(gè)語句調(diào)用失敗后,require()將給出一個(gè)致命錯誤,而include()只是給出一個(gè)警告

 

 

四.魔法常量

 

PHP實(shí)現(xiàn)了一些所謂的魔法常量,他們并不真的是常量,因?yàn)檫@些魔法常量會根據(jù)使用的場合改變值。

名稱

描述

__FILE__

當(dāng)前文件名

__LINE__

當(dāng)前行號

__FUNCTION__

當(dāng)前函數(shù)名

__CLASS__

當(dāng)前類名

__METHOD__

當(dāng)前方法名

 


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI