邊記邊學PHP-(八)函數及include與require引用文件

         作爲PHP的基礎,大概還有四個大的部分,一個是函數,一個是數組,一個是字符串,一個是面向對象也就是類。本來想通過一篇就可以搞定,但是我想了一下,還是分開吧,一些東西需要注意細節。分開可能說的詳細一點。

         每種語言都會涉及函數,PHP當然也會有。使用函數可以減少相同的代碼,提高效率。

1.函數的命名規則:

①一般採用大小寫混合,第一個單詞的首字母小寫,後面單詞的首字母大寫。如:function run();function runFast();function getBackGround();

②函數的參數沒有限制,0到多個都可以

③PHP作爲一種弱語言類型,對於函數的名稱不區分大小寫,也就是說name()與NAME()是同一個函數,所以在一個文件裏不要用大小寫區分兩個函數,否則會出錯。

④名稱的開頭不能使用數字或者其他符號。必須是英文字母或者下劃線。一般功能函數使用下劃線開頭。

⑤不能使用關鍵字定義函數

⑥如果是要獲取一個值,往往這樣定義:functionset……();如果設置一個值往往這樣定義:function set……();

2.函數格式:

function function_name([$arg1],[$arg2],···){

         函數主體,功能實現

    [return$argn;]

}

說明一點:[]這裏面的代表可以省略。在PHP參考手冊裏同樣是如此。如果一個函數的參數被包含在中括號裏面,說明這個參數可以省略。

第一個function是定義函數時必須使用的參數,表示聲明一個函數。裏面的$arg1···都是可以定義或者不定義的參數。函數可以有返回值也可以沒有返回值。

函數調用就是用函數名調用,有參數的需要傳參。有返回值的可以根據需要進行使用,比如根據返回值作爲判斷語句的判斷條件,也可以輸出返回值等等。

3.傳遞參數

參數傳遞有兩種方式,第一種是按值傳遞,第二種是引用傳遞,也就是地址傳遞。我舉一個例子:

(按值傳遞)

<?php

function example($num){

         $num+= 1;

         echo$num;

}

$num = 1;

example($num);

echo ‘函數外的$num:’.$num;

?>

在example這個函數裏面輸出的num 是2.但是在函數外面的num還是1.也就是說當按值傳遞的時候,他只是在函數的內部改變了傳進來的變量的值,但是函數外部原來變量的值還是沒有改變的,雖然你定義的變量名與函數的參數名一樣。

(引用(地址)傳遞)

<?php

function example(&$num){

         $num+= 1;

         echo$num;

}

$num = 1;

example($num);

echo ‘函數外的$num:’.$num;

?>

引用傳遞就是在參數的前面加了一個取地址符&。這樣輸出的結果就是兩個都是2。也就是說傳進去的就是變量的存儲地址。每個變量佔用一個地址,如果這個地址上的值改變,那麼這個值就改變了。就是這個意思。這點需要注意。

4.默認參數

如果你在定義函數的時候在參數列表定義的某一個參數給它了值,那麼這個參數就是默認參數,也叫可選參數,儘管定義了這個參數,在使用的時候還是可以不用寫的,如果不寫它就用你給它的值。

5.其他

在函數內部可以再次定義函數,也就是嵌套定義。在函數內部定義的函數,只能在本函數內部使用,我是這麼理解的。PHP函數也可以像其他語言一樣遞歸調用函數。這個我就不說了,我最煩的就是遞歸,一會就能把我遞歸暈了。

6.內建函數

PHP提供了一些內建函數,也就是已經定義好的。現在在我看來用的最多的就是一些字符串函數和文件函數,真的是很棒。這個可以看手冊,當然還有很多。

7.輸出語句

echo我就不多說了,我一般就是用這個。

當然還可以用print , printf,sprintf如果有興趣的可以自己查一下。我基本沒有用過。

在數組介紹的時候還有兩個輸出函數一個是print_r(),一個是var_dump()這兩個數組再講。

 

接下來就是這篇最重要的require和include 了。

首先知道,這兩個函數都是引用文件函數,引用外部的PHP文件。主要有四個語句,require,require_once,include,include_once。這四個語句。

他們四個都是這種形式:void 函數名(sting filename)

參數都是文件的路徑。但調用他們的時候可以加括號也可以不加。

在使用他們的部分PHP都會將他們代表的代碼替換到他們的位置。比如上一篇,我用了一個<frameset></frameset>這個標籤,把界面分了三部分。同樣你可以使用表格將界面分割,在表格內部使用這些引用函數引用。比如:

<table>

<tr>

<td><?php include(“top.php”);?></td>

</tr>

<tr>

<td><?php include(“bottom.php”);?></td>

</tr>

</table>

這樣就把界面分成了兩部分,上面一部分引用top.php,下面一部分引用bottom.php。當然這裏我沒有設計上下兩部分的比例,可以通過表格的一些屬性進行設計。我只是說明用法。同樣其他三種引用函數也可以這樣做。

再就是他們還有更大的用處,比如說有些函數在整個工程裏的各個文件都需要用到,那麼你可以把這些函數單獨寫在一個PHP文件裏,然後在其他文件裏引用這些文件,從而減少整個文件的工作量,比如:

我在phpHelper.php裏面定義了一些常用的函數,在其他文件裏需要用,那麼我在其他文件的開頭只要引用這個文件就好了。這裏面的函數我就可以再這個php文件裏用了。我會這麼引用:

<?php

include ‘phpHelper.php’;   //這裏也可是其他三種函數

 

//在這後面的代碼裏就可以引用引用文件的函數了。

?>

特別是以後用到數據庫連接數據庫操作,如果每個界面都要寫一次,未免太麻煩了。

那麼問題來了,這四個函數有什麼區別嗎?

①inlcude與include_once(require與require_once)的區別:

帶有once 的函數是沒有帶once函數的加強,或者延伸。帶有once的函數在引用文件的時候會先檢查一下在這個php文件裏你要引用的文件是不是已經被引用過了,如果已經引用過了,它不會再引用第二次。在include_once裏,如果重複引用了文件,那麼程序運行到此處的時候就會發生錯誤,因爲一些東西你重複定義了。如果是require_once重複引用了文件,它只會執行第一個,第二個文件不會執行。

②include與require(include_once與require_once的區別):

第一:使用include調用時如果沒有找到要引用的文件,那麼程序會發出警告,但是不會終止腳本進行(php語言可以看成腳本語言,因爲只是處理後臺程序),但是如果是require引用沒有找到要引用的文件,那麼將會直接報錯,終止運行。

第二:使用require調用文件的時候,只要程序開始執行,不管這句引用在哪,那麼引用的文件會立刻把這句話替換掉,換成引用的文件。但是include調用文件時,只有程序執行到該句時程序纔會把這句話替換。

另外:include_once和require_once都是確保外部文件在同一個php文件裏只能被包含一次,使用這兩個可以有效防止包含相同的函數庫從而導致函數重複定義發生錯誤。只是require_once發生錯誤時是一個致命錯誤而include_once發生錯誤時只會發出警告。

 

所以建議使用require_once來保證程序的正確性。

 

 

今天兩節課,所以現在才更新。在剛剛發佈的語言收入排行榜上,php沒有進前12,我現在有點迷茫,不知道要不要繼續學下去。是不是應該儘早的學一下Java,不管是應用度還是收入上Java都是不錯的語言。但是還是先好好學吧,等我再衝動一次的時候再學Java。

 

最近這幾篇都沒什麼意思啊,幾乎都是理論,還沒有做點什麼。

等這幾個基礎都說完了,數據庫編程應該就很有意思了。

 

堅持!堅持!再堅持!

發佈了35 篇原創文章 · 獲贊 9 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章