標籤:
自訂函數
PHP內建了超過1000個函數,因此函數使得PHP成為一門非常強大的語言。大多數時候我們使用系統的內建函數就可以滿足需求,但是自訂函數通過將一組代碼封裝起來,使代碼進行複用,程式結構與邏輯更加清晰。
PHP函數的定義方式:
1.使用關鍵字“function”開始
2.函數名可以是字母或底線開頭:function name()
3.在大括弧中編寫函數體
1 <?php2 function say()3 {4 echo ‘hello world‘;5 }6 //在這裡調用函數7 say();函數的參數
PHP的函數可以沒有參數,也可以有若干個參數,多個參數稱之為參數列表,採用逗號進行分割,參數類似於一個變數,調用時用來傳遞資料到函數體中。通過傳遞參數可以使函數實現對參數的運算,得到我們想要的結果。
參數的變數名可以自由指定,但最好能夠表達相關的意思,常用的設定參數的方法為:
1 <?php2 function sum($a, $b) {3 echo $a + $b;4 }5 //在這裡調用Function Compute1+2的值6 sum(1,2);7 ?>傳回值
使用return關鍵字可以使函數傳回值,可以返回包括數組和對象的任意類型,如果省略了 return,則預設傳回值為 NULL。
1 function add($a) {2 return $a+1;3 }4 $b = add(1);
返回語句會立即中止函數的運行,並且將控制權交回調用該函數的程式碼,因此下面函數的傳回值跟上面的函數是一樣的。
1 function add($a) {2 return $a+1;3 $a = 10;4 return $a+20;5 }6 $b = add(1);7
函數不能返回多個值,但可以通過返回一個數組來得到類似的效果。
1 function numbers() {2 return array(1, 2, 3);3 }4 list ($one, $two, $three) = numbers();5 可變函數
所謂可變函數,即通過變數的值來調用函數,因為變數的值是可變的,所以可以通過改變一個變數的值來實現調用不同的函數。經常會用在回呼函數、函數列表,或者根據動態參數來調用不同的函數。可變函數的調用方法為變數名加括弧。
1 function name() {2 echo ‘jobs‘;3 }4 $func = ‘name‘;5 $func(); //調用可變函數
可變函數也可以用在對象的方法調用上。
1 <?php 2 class book { 3 function getName() { 4 return ‘bookname‘; 5 } 6 } 7 $func = ‘getName‘; 8 $book = new book(); 9 $book->$func();10 ?>內建函數
內建函數指的是PHP預設支援的函數,PHP內建了很多標準的常用的處理函數,包括字串處理、數組函數、檔案處理、session與cookie處理等。
我們先拿字串處理函數來舉例,通過內建函數str_replace可以實現字串的替換。下面的例子將“jobs”替換成“steven jobs”:
1 $str = ‘i am jobs.‘;2 $str = str_replace(‘jobs‘, ‘steven jobs‘, $str);3 echo $str; //結果為“i am steven jobs”
另外一些函數是通過其他擴充來支援的,比如mysql資料庫處理函數,GD影像處理函數,郵件處理函數等,PHP預設載入了一些常用的擴充庫,我們可以安裝或者載入其他擴充庫來增加PHP的處理函數。
判斷函數是否存在
當我們建立了自訂函數,並且瞭解了可變函數的用法,為了確保程式調用的函數是存在的,經常會先使用function_exists判斷一下函數是否存在。同樣的method_exists可以用來檢測類的方法是否存在。
1 function func() {2 }3 if (function_exists(‘func‘)){4 echo ‘exists‘;5 }
類是否定義可以使用class_exists。
1 class MyClass{2 }3 // 使用前檢查類是否存在4 if (class_exists(‘MyClass‘)) {5 $myclass = new MyClass();6 }
PHP中有很多這類的檢查方法,例如檔案是否存在file_exists等。
1 $filename = ‘test.txt‘;2 if (!file_exists($filename)) {3 echo $filename . ‘ not exists.‘;4 }上一節:PHP讀書筆記(6)- 數組
PHP讀書筆記(7)- 函數