- 自定義函數(shù)
- 介紹:
PHP內(nèi)置了超過(guò)1000個(gè)函數(shù)赠幕,因此函數(shù)使得PHP成為一門(mén)非常強(qiáng)大的語(yǔ)言俄精。大多數(shù)時(shí)候我們使用系統(tǒng)的內(nèi)置函數(shù)就可以滿足需求,但是自定義函數(shù)通過(guò)將一組代碼封裝起來(lái)榕堰,使代碼進(jìn)行復(fù)用,程序結(jié)構(gòu)與邏輯更加清晰嫌套。 - 定義方式:
- 使用關(guān)鍵字“function”開(kāi)始;
- 函數(shù)名可以是字母或下劃線開(kāi)頭;
- 在大括號(hào)中編寫(xiě)函數(shù)體;
function name() {
echo 'blalbla';
}
通過(guò)上面的步驟逆屡,我們就定義了一個(gè)簡(jiǎn)單的函數(shù),當(dāng)我們需要的時(shí)候踱讨,就可以在代碼中調(diào)用這個(gè)函數(shù)魏蔗,調(diào)用方法為函數(shù)名+參數(shù);
- 參數(shù)
PHP的函數(shù)可以沒(méi)有參數(shù),也可以有若干個(gè)參數(shù)痹筛,多個(gè)參數(shù)稱(chēng)之為參數(shù)列表莺治,采用逗號(hào)進(jìn)行分割,參數(shù)類(lèi)似于一個(gè)變量帚稠,調(diào)用時(shí)用來(lái)傳遞數(shù)據(jù)到函數(shù)體中谣旁。通過(guò)傳遞參數(shù)可以使函數(shù)實(shí)現(xiàn)對(duì)參數(shù)的運(yùn)算,得到我們想要的結(jié)果滋早。
參數(shù)的變量名可以自由指定榄审,但最好能夠表達(dá)相關(guān)的意思,常用的設(shè)定參數(shù)的方法為:
function sum($a, $b) {
return $a+$b;
}
- 返回值
使用 return 關(guān)鍵字可以使函數(shù)返回值杆麸,可以返回包括數(shù)組和對(duì)象的任意類(lèi)型搁进,如果省略了 return,則默認(rèn)返回值為 NULL昔头。
function add($a) {
return $a+1;
}
$b = add(1);
返回語(yǔ)句會(huì)立即中止函數(shù)的運(yùn)行饼问,并且將控制權(quán)交回調(diào)用該函數(shù)的代碼行,因此下面函數(shù)的返回值跟上面的函數(shù)是一樣的揭斧。
function add($a) {
return $a+1;
$a = 10;
return $a+20;
}
$b = add(1);
函數(shù)不能返回多個(gè)值莱革,但可以通過(guò)返回一個(gè)數(shù)組來(lái)得到類(lèi)似的效果。
function numbers() {
return array(1, 2, 3);
}
list ($one, $two, $three) = numbers();
- 可變函數(shù)
所謂可變函數(shù)未蝌,即通過(guò)變量的值來(lái)調(diào)用函數(shù)驮吱,因?yàn)樽兞康闹凳强勺兊模钥梢酝ㄟ^(guò)改變一個(gè)變量的值來(lái)實(shí)現(xiàn)調(diào)用不同的函數(shù)萧吠。經(jīng)常會(huì)用在 回調(diào)函數(shù) , 函數(shù)列表 ,或者 根據(jù)動(dòng)態(tài)參數(shù)來(lái)調(diào)用不同的函數(shù) 左冬。可變函數(shù)的調(diào)用方法為變量名加括號(hào)纸型。
function name() {
echo 'jobs';
}
$func = 'name';
$func(); //調(diào)用可變函數(shù)
可變函數(shù)也可以用在對(duì)象的方法調(diào)用上拇砰。
class book {
function getName() {
return 'bookname';
}
}
$func = 'getName';
$book = new book();
$book->$func();
- 內(nèi)置函數(shù)
內(nèi)置函數(shù)指的是PHP默認(rèn)支持的函數(shù)梅忌,PHP內(nèi)置了很多標(biāo)準(zhǔn)的常用的處理函數(shù),包括字符串處理除破、數(shù)組函數(shù)牧氮、文件處理、session與cookie處理等瑰枫。
我們先拿字符串處理函數(shù)來(lái)舉例踱葛,通過(guò)內(nèi)置函數(shù) str_replace 可以實(shí)現(xiàn)字符串的替換。下面的例子將“jobs”替換成“steven jobs”:
$str = 'i am jobs.';
$str = str_replace('jobs', 'steven jobs', $str);
echo $str; //結(jié)果為“i am steven jobs”
另外一些函數(shù)是通過(guò)其他擴(kuò)展來(lái)支持的光坝,比如mysql數(shù)據(jù)庫(kù)處理函數(shù)尸诽,GD圖像處理函數(shù),郵件處理函數(shù)等盯另,PHP默認(rèn)加載了一些常用的擴(kuò)展庫(kù)性含,我們可以安裝或者加載其他擴(kuò)展庫(kù)來(lái)增加PHP的處理函數(shù)。
- 判斷函數(shù)是否存在
當(dāng)我們創(chuàng)建了自定義函數(shù)鸳惯,并且了解了可變函數(shù)的用法商蕴,為了確保程序調(diào)用的函數(shù)是存在的,經(jīng)常會(huì)先使用 function_exists 判斷一下函數(shù)是否存在芝发。同樣的 method_exists 可以用來(lái)檢測(cè)類(lèi)的方法是否存在绪商。
function func() {
}
if (function_exists('func')){
echo 'exists';
}
類(lèi)是否定義可以使用 **class_exists** 。
class MyClass{
}
// 使用前檢查類(lèi)是否存在
if (class_exists('MyClass')) {
$myclass = new MyClass();
}
PHP中有很多這類(lèi)的檢查方法后德,例如文件是否存在 file_exists 等部宿。
$filename = 'test.txt';
if (!file_exists($filename)) {
echo $filename . ' not exists.';
}