第 7 章 自定義函式

2021-09-02 07:02:33 字數 3723 閱讀 5196

學習要點:

1.標準函式

2.自定義函式

3.檔案包含

4.魔法常量

一般來講,冗餘的**都是不好的。一而再,再而三地重寫**不僅浪費時間,從布局結構角度看也顯得粗製濫造。與所有優秀的程式語言一樣,php 採用了很多方法來緩解冗餘**的問題,其中最常見而且最容易實現的方法就是使用函式(function )。

一.標準函式

標準的 php 發行包中有 1000 多個標準函式,這些標準函式都是系統內建的,不需要使用者自己建立而可以直接使用。

echo md5('123456' ); //md5函式對字串進行加密處理

?>

二.自定義函式

php 內建函式允許和檔案進行互動、使用資料庫、建立圖形,還可以連線其他的伺服器。但是,在實際工作中,有許多時候所需要的東西是語言的建立者無法預見到的。

宣告乙個函式可以讓我們想內建函式那樣使用自己的**。只要簡單地呼叫這個函式並提供給它必須的引數。這就意味著,在整個指令碼中,都可以呼叫和多次重複使用相同的函式 。

建立函式

function functionname() 

?>

呼叫函式

functionname();

?>

函式命名

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

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

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

包含引數無返回的函式呼叫

function functionarea( $radius) 

functionarea( 10);

?>

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

function functionarea( $radius) 

echo functionarea(10 );

?>

包含預設引數的函式呼叫:可以為輸入引數指定預設值,在沒有提供其他值的情況下,就會把這個預設值自動賦給該引數。

function functionarea( $radius=10) 

echo functionarea();

?>

返回多個值的函式呼叫:可以通過返回乙個陣列然後使用 list() 函式構造即可。

function functioninfo($name,$age,$job ) 

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

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

?>

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

$prices = 50;

$tax = 0.5;

function functionprices(&$prices,$tax )

functionprices($prices,$tax );

echo $prices;

echo '

';echo $tax;

?>

請注意,函式呼叫將不區分大小寫,所以呼叫 functionname() 、functionname() 或functioinname()都是有效的,而且都將返回相同的結果。為了方便,這裡都用小寫。

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

理解作用域

變數的作用域可以控制變數在**是可見並且可用的。不同的程式語言有不同的變數作用域規則。php 具有相當簡單的規則:

在函式內部宣告的變數作用與是從宣告它們的那條語句開始到函式末尾。這叫做函式作用域。這些變數成為區域性變數。

在函式外部宣告的變數作用域是從宣告它們的那條語句開始到檔案末尾,而不是函式內部。這叫做全域性作用域。這些變數成為全域性變數。

特殊的超級全域性變數在函式內外部都是可見的。

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

關鍵字「global」可以用來手動指定乙個在函式中定義或使用的變數具有全域性作用域。

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

全域性變數定義 global

$a = 5 ;

function fna()

fna();

echo $a;

?>

可以通過使用超級全域性變數$global,可以訪問或改變全域性作用域中的任何變數。

$globals['a' ] = 5;

function fna()

fna();

echo $globals['a' ];

?>

建立自己的函式庫

通常將函式集檔案存放在 library 資料夾裡,然後通過檔案呼叫即可。檔名約定促成可以取名為 tool.library.php,tool 可以根據情況來設定,後面兩個照抄!

三.檔案包含

為了確保重用性和模組性,最普遍的方式是把功能組建隔離為單獨的檔案,然後在需要時重新組裝。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 實現了一些所謂的魔法常量,他們並不真的是常量,因為這些魔法常量會根據使用的場合改變值。

第7章 自定義函式

demo1.php 標準函式,內建函式 echo md5 123456 echo echo sha1 123456 echo 閱誰問君誦,水落清香浮。demo2.php 建立函式,不要跟系統的內建函式重名 函式有個特性,必須呼叫,才可以執行 無引數表示 裡面是空的,無返回就是函式的程式裡沒有 ret...

VBA第7課 編寫自定義函式

1.取工作表總個數 在工作表裡輸入 shcount 即可,以下同理 function shcount shcount sheets.count end function 2.取得單元格顯示的自定義函式 function getv rg as range getv rg.text end functi...

7 Mysql自定義函式

上一節課主要講了內建函式,對於系統函式,完成我們常規的操作就足夠了,但是有些情況下不能滿足則需要使用自定義函式。自定義函式,使用者自定義函式 user defined function,udf 是一種對mysql擴充套件的途徑,其用法與內建函式相同。我們這裡回憶一下內建函式是如何使用的?首先它要有個...