一.標(biāo)準(zhǔn)函數(shù)
創(chuàng)新互聯(lián),專注為中小企業(yè)提供官網(wǎng)建設(shè)、營(yíng)銷型網(wǎng)站制作、響應(yīng)式網(wǎng)站建設(shè)、展示型網(wǎng)站建設(shè)、成都做網(wǎng)站等服務(wù),幫助中小企業(yè)通過網(wǎng)站體現(xiàn)價(jià)值、有效益。幫助企業(yè)快速建站、解決網(wǎng)站建設(shè)與網(wǎng)站營(yíng)銷推廣問題。
標(biāo)準(zhǔn)的PHP發(fā)行包中有1000多個(gè)標(biāo)準(zhǔn)函數(shù),這些標(biāo)準(zhǔn)函數(shù)都是系統(tǒng)內(nèi)置的,不需要用戶自己創(chuàng)建而可以直接使用。
echomd5('123456'); //MD5函數(shù)對(duì)字符串進(jìn)行加密處理
?>
二.自定義函數(shù)
PHP內(nèi)置函數(shù)允許和文件進(jìn)行交互、使用數(shù)據(jù)庫、創(chuàng)建圖形,還可以連接其他的服務(wù)器。但是,在實(shí)際工作中,有許多時(shí)候所需要的東西是語言的創(chuàng)建者無法預(yù)見到的。
聲明一個(gè)函數(shù)可以讓我們想內(nèi)置函數(shù)那樣使用自己的代碼。只要簡(jiǎn)單地調(diào)用這個(gè)函數(shù)并提供給它必須的參數(shù)。這就意味著,在整個(gè)腳本中,都可以調(diào)用和多次重復(fù)使用相同的函數(shù)。
創(chuàng)建函數(shù)
functionfunctionName() {
echo'這是一個(gè)無參無返回自定義函數(shù)';
}
?>
調(diào)用函數(shù)
functionName();
?>
函數(shù)命名
1.函數(shù)名不能和已有的函數(shù)名重名。
2.函數(shù)名只能包含字母、數(shù)字和下劃線。
3.函數(shù)名不能以數(shù)字開頭。
包含參數(shù)無返回的函數(shù)調(diào)用
functionfunctionArea($radius) {
$area=$radius*$radius* pi();
echo$area;
}
functionArea(10);
?>
包含參數(shù)有返回的函數(shù)調(diào)用:使用return()語句可以向函數(shù)調(diào)用者返回任意確定值,將程序控制權(quán)返回到調(diào)用者的作用域。
functionfunctionArea($radius) {
return$radius*$radius* pi();
}
echofunctionArea(10);
?>
包含默認(rèn)參數(shù)的函數(shù)調(diào)用:可以為輸入?yún)?shù)指定默認(rèn)值,在沒有提供其他值的情況下,就會(huì)把這個(gè)默認(rèn)值自動(dòng)賦給該參數(shù)。
functionfunctionArea($radius=10) {
return$radius*$radius* pi();
}
echofunctionArea();
?>
返回多個(gè)值的函數(shù)調(diào)用:可以通過返回一個(gè)數(shù)組然后使用list()函數(shù)構(gòu)造即可。
functionfunctionInfo($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)對(duì)參數(shù)的修改在函數(shù)范圍外也能反應(yīng)。
$prices=50;
$tax=0.5;
functionfunctionPrices(&$prices,$tax) {
$prices=$prices+ ($prices*$tax);
$tax=$tax*2;
}
functionPrices($prices,$tax);
echo$prices;
echo'
';
echo$tax;
?>
請(qǐng)注意,函數(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)簡(jiǎn)單的規(guī)則:
在函數(shù)內(nèi)部聲明的變量作用與是從聲明它們的那條語句開始到函數(shù)末尾。這叫做函數(shù)作用域。這些變量成為局部變量。
在函數(shù)外部聲明的變量作用域是從聲明它們的那條語句開始到文件末尾,而不是函數(shù)內(nèi)部。這叫做全局作用域。這些變量成為全局變量。
特殊的超級(jí)全局變量在函數(shù)內(nèi)外部都是可見的。
使用require()和include()并不影響作用域。如果這兩個(gè)語句用于函數(shù)內(nèi)部,函數(shù)作用域適用。如果它不在函數(shù)內(nèi)部,全局作用域適用。
關(guān)鍵字“global”可以用來手動(dòng)指定一個(gè)在函數(shù)中定義或使用的變量具有全局作用域。
通過調(diào)用unset($variable_name)可以手動(dòng)刪除變量。如果變量被刪除,它就不在參數(shù)所指定的作用域中了。
全局變量定義global
$a=5;
functionfna() {
global$a;
$a=20;
}
fna();
echo$a;
?>
可以通過使用超級(jí)全局變量$GLOBAL,可以訪問或改變?nèi)肿饔糜蛑械娜魏巫兞俊?/p>
$GLOBALS['a'] =5;
functionfna() {
$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()相同,不過它會(huì)首先驗(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è)致命錯(cuò)誤,而include()只是給出一個(gè)警告
四.魔法常量
PHP實(shí)現(xiàn)了一些所謂的魔法常量,他們并不真的是常量,因?yàn)檫@些魔法常量會(huì)根據(jù)使用的場(chǎng)合改變值。
名稱 | 描述 |
__FILE__ | 當(dāng)前文件名 |
__LINE__ | 當(dāng)前行號(hào) |
__FUNCTION__ | 當(dāng)前函數(shù)名 |
__CLASS__ | 當(dāng)前類名 |
__METHOD__ | 當(dāng)前方法名 |