1. 程式人生 > >PHP整理筆記六自定義函數

PHP整理筆記六自定義函數

php 自定義函數

一.標準函數

標準的PHP發行包中有1000多個標準函數,這些標準函數都是系統內置的,不需要用戶自己創建而可以直接使用。

<?

echo md5(‘123456‘); //MD5函數對字符串進行加密處理

?>

二.自定義函數

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

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

創建函數

<?

function functionName() {

echo 這是一個無參無返回自定義函數‘;

}

?>

調用函數

<?

functionName();

?>

函數命名

1.函數名不能和已有的函數名重名。

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

3.函數名不能以數字開頭。

包含參數無返回的函數調用

<?

function functionArea($radius) {

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

echo $area;

}

functionArea(10);

?>

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

<?

function functionArea($radius) {

return $radius * $radius * pi();

}

echo functionArea(10);

?>

包含默認參數的函數調用:可以為輸入參數指定默認值,在沒有提供其他值的情況下,就會把這個默認值自動賦給該參數。

<?

function functionArea($radius=10) {

return $radius * $radius * pi();

}

echo functionArea();

?>

返回多個值的函數調用:可以通過返回一個數組然後使用list()函數構造即可。

<?

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

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

return $userInfo;

}

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

echo $name.今年‘.$age.歲了,目前還是個‘.$job;

?>

包含引用傳參的函數調用:引用傳遞可以在函數內對參數的修改在函數範圍外也能反應。

<?

$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;

?>

請註意,函數調用將不區分大小寫,所以調用functionname()FunctionName()FUNCTIOINNAME()都是有效的,而且都將返回相同的結果。為了方便,這裏都用小寫。

註意到函數名稱和變量名稱是不同的,這一點很重要。變量名是區分大小寫的,所以$Name$name是兩個不同的變量,但Name()name()則是同一個函數。

理解作用域

變量的作用域可以控制變量在哪裏是可見並且可用的。不同的編程語言有不同的變量作用域規則。PHP具有相當簡單的規則:

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

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

特殊的超級全局變量在函數內外部都是可見的。

使用require()include()並不影響作用域。如果這兩個語句用於函數內部,函數作用域適用。如果它不在函數內部,全局作用域適用。

關鍵字“global”可以用來手動指定一個在函數中定義或使用的變量具有全局作用域。

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

全局變量定義global

<?

$a = 5;

function fna() {

global $a;

$a = 20;

}

fna();

echo $a;

?>

可以通過使用超級全局變量$GLOBAL,可以訪問或改變全局作用域中的任何變量。

<?

$GLOBALS[‘a‘] = 5;

function fna() {

$GLOBALS[‘a‘] = 20;

}

fna();

echo $GLOBALS[‘a‘];

?>

創建自己的函數庫

通常將函數集文件存放在library文件夾裏,然後通過文件調用即可。文件名約定促成可以取名為tool.library.phptool可以根據情況來設定,後面兩個照抄!

三.文件包含

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

include()語句將在其被調用的位置處判斷並包含一個文件。包含一個文件與在該語句所在位置復制該文件的數據具有相同的結果。

<?

include ‘include.php‘;

?>

include_once()函數的作用與include()相同,不過它會首先驗證是否已經包含了該文件。如果包含了該文件,則不再執行include_once()

<?

include_once ‘include.php‘;

?>

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

<?

require(‘require.php‘);

?>

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

<?

require_once(‘require.php‘);

?>

require()語句和include()語句幾乎是等價的。二者的差異在於,當這兩個語句調用失敗後,require()將給出一個致命錯誤,而include()只是給出一個警告

四.魔法常量

PHP實現了一些所謂的魔法常量,他們並不真的是常量,因為這些魔法常量會根據使用的場合改變值。

名稱

描述

__FILE__

當前文件名

__LINE__

當前行號

__FUNCTION__

當前函數名

__CLASS__

當前類名

__METHOD__

當前方法名


PHP整理筆記六自定義函數