明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

PHP3中文文檔(續(xù)4)

[摘要]為了理解SWITCH語句為了躲避語句冗長,知道它如何被執(zhí)行的是非常重要的.SWITCH語句石一行一行 執(zhí)行的(事實上,是一條語句一條語句).在開始時,沒有代碼被執(zhí)行.僅僅當一個值于SWITCH表達式的語句的值相同的CASE語句被發(fā)現(xiàn)后,PHP繼續(xù)執(zhí)行語句直到SWITCH體的結(jié)束,或者出現(xiàn)了BREA...
為了理解SWITCH語句為了躲避語句冗長,知道它如何被執(zhí)行的是非常重要的.SWITCH語句石一行一行 執(zhí)行的(事實上,是一條語句一條語句).在開始時,沒有代碼被執(zhí)行.僅僅當一個值于SWITCH表達式的語句的值相同的CASE語句被發(fā)現(xiàn)后,PHP繼續(xù)執(zhí)行語句直到SWITCH體的結(jié)束,或者出現(xiàn)了BREAK語句.如果你在一個分支語句的后面沒有寫B(tài)REAK語句,PHP將繼續(xù)執(zhí)行下面分支的語句.例如:

 

/* example 3 */

 

switch ($i) {

case 0:

print "i equals 0";

case 1:

print "i equals 1";

case 2:

print "i equals 2";

}

 

這里,如果$i等于0,PHP將會執(zhí)行所有打印語句.如果$i等于1,PHP將會執(zhí)行剩下的兩個打印語句,并且僅僅當$i等于2的時候,你才能得到你期望的執(zhí)行結(jié)果,只有’I equals 2’被顯示.因此不要在每一個分支語句的后面忘記BREAK語句(即使你在一定的環(huán)境下有可能想避免提供他們).

一個特殊的分支是默認的分支.這個分支可以匹配任何其它分支沒有匹配的事情.例如:

 

/* example 4 */

 

switch ($i) {

case 0:

print "i equals 0";

break;

case 1:

print "i equals 1";

break;

case 2:

print "i equals 2";

break;

default:

print "i is not equal to 0, 1 or 2";

}

 

另外一個值得一提的事實是CASE表達式可以是任何計算標量類型的表達式,也就是說,整型或?qū)嵭秃妥址?數(shù)組和對象將不會導致PHP崩潰,但是他們沒有沒有任何意義.

 

REQUIRE
REQUIRE語句使用指定的文件來代替它自己,與C語言中的#include語句非常相似。這意味著你不能把一個require()語句放在一個循環(huán)體中,并且期望它在每一次反復中都包含不同文件的內(nèi)容.為了達到這個目的,可以使用INCLUDE語句。

require ('header.inc');

 

INCLUDE
INCLUDE語句包括和計算指定文件.

在每次遭遇INCLUDE語句的時候都會進行一次.因此你可以在一個循環(huán)體中使用INCLUDE語句.以用來包含一些不同的文件.

$files = array ('first.inc', 'second.inc', 'third.inc');

for ($i = 0; $i < count($files); $i++) {

include($files[$i]);

}

INCLUDE()與REQUIRE()語句是不同的,include語句是每一次都重新計算(并且僅僅當它被執(zhí)行的時候),而require()語句當他第一次被碰到的時候,用指定的文件來代替它本身,無論這個文件的內(nèi)容是否被計算(例如,如果它出現(xiàn)在一個條件為FALSE的if語句中).

因為include()是一個特殊的語言結(jié)構(gòu),你必須在一個語法塊中封閉它,如果它在一個條件塊中.

 

/*錯誤,不會同設(shè)想一樣工作. */

 

if ($condition)

include($file);

else

include($other);

 

/*下面是正確的. */

 

if ($condition)

{

include($file);

}

else {

include($other);

}

 

當一個文件被計算的時候,語法分析將處在”HTML-模式”中,這個模式將輸出這個文件的內(nèi)容直到第一個PHP開始標簽(<?)被遇到.

參考 readfile(),virtual().

函數(shù)

一個function(函數(shù))可以使用如下語法來定義

function foo ($arg_1, $arg_2, ..., $arg_n) {

echo "Example function.\n";

return $retval;

}

任何有效的PHP代碼可以出現(xiàn)在function(函數(shù))中,即使是其它的函數(shù)或類定義.

Function必須在他們被引用之前定義.

返回值

使用一些可選的返回語句,任何類型的數(shù)值都能被返回,包括對象和廣義表.

function my_sqrt ($num)

{

return $num * $num;

}

echo my_sqrt (4); // 輸出 '16'.

 

可以返回多值,但是同時的影響使通過一個廣義表來實現(xiàn):

function foo()

{

return array (0, 1, 2);

}

list ($zero, $one, $two) = foo();

參數(shù)

通過參數(shù)表可以傳遞信息到函數(shù),這個表可以是變量或常量以逗號(,)分隔構(gòu)成的。

PHP3支持使用值來傳遞變量(默認),通過調(diào)用傳遞,和默認的參數(shù)值.可變長度的參數(shù)列表目前不被支持,但是可以通過傳遞數(shù)組來實現(xiàn).

function takes_array($input) {

echo "$input[0] + $input[1] = ", $input[0]+$input[1];

}

通過調(diào)用傳遞(Passing by reference)

默認的,函數(shù)參數(shù)通過值來傳遞.如果你希望允許一個函數(shù)可以修改它的參數(shù)的值,你可以通過調(diào)用來傳遞他們.

如果你希望一個函數(shù)參數(shù)意志通過引用被傳遞,你可以預先函數(shù)定義中在參數(shù)名前加符號(&):

function foo( &$bar ) {

$bar .= ' and something extra.';

}

$str = 'This is a string, ';

foo ($str);

echo $str; // 輸出 'This is a string, and something extra.'

如果你希望向一個不是用這種方式定義的函數(shù)用調(diào)用的方式傳遞參數(shù),你可以在函數(shù)調(diào)用中的參數(shù)名稱前加符號(&).

function foo ($bar) {

$bar .= ' and something extra.';

}

$str = 'This is a string, ';

foo ($str);

echo $str; //輸出 'This is a string, '

foo (&$str);

echo $str; //輸出 'This is a string, and something extra.'

默認值
一個函數(shù)對于標量參數(shù)可以定義C++-風格的默認值.

function makecoffee ($type = "cappucino") {

echo "Making a cup of $type.\n";

}

echo makecoffee ();

echo makecoffee ("espresso");

上面的程序段的輸出如下:

Making a cup of cappucino.

Making a cup of espresso.

默認值必須是一個常量表達式,不是一個變量或類成員.

注意當時用默認參數(shù)時,任何默認都應該在任何非默認參數(shù)右邊;否則,事情將不會想你所想的那樣.考慮下面的程序段:

function makeyogurt ($type = "acidophilus", $flavour) {

return "Making a bowl of $type $flavour.\n";

}

echo makeyogurt ("raspberry"); // 將不會按照預想工作

上面例子的輸出是:

Warning: Missing argument 2 in call to makeyogurt() in

/usr/local/etc/httpd/htdocs/php3test/functest.html on line 41

Making a bowl of raspberry .

現(xiàn)在,用下面的對比上面的:

function makeyogurt ($flavour, $type = "acidophilus"){

return "Making a bowl of $type $flavour.\n";

}

echo makeyogurt (“raspberry”);//正常工作

這個例子的輸出是:

Making a bowl of acidophilus raspberry.

OLD_FUNCTION

OLD_FUNCTION語句允許你聲明一個使用PHP/FI2 的語法的函數(shù)(你需要做的就是把’function’替換成’old_function’.

這是一個不被贊成的特征,并且應該僅僅被PHP/FI2到PHP3的轉(zhuǎn)換這使用.

定義成為OLD_FUNCTION模式的函數(shù)不能被PHP的內(nèi)部代碼調(diào)用。其中之一的情況是,意味著您不能在象as usort()、array_walk()和register_shutdown_function().這樣的函數(shù)中使用使用他們。您可以使用編寫交換函數(shù)的方法來調(diào)用OLD_FUNCTION模式的函數(shù)(在普通的PHP3表單中)。

CLASS

一個class是一個變量和使用這些變量的函數(shù)的組合。定義class使用如下的語法:

<?phpclass Cart { var $items; // Items in our shopping cart

// Add $num articles of $artnr to the cart

function add_item ($artnr, $num) { $this->items[$artnr] += $num; }

// Take $num articles of $artnr out of the cart

function remove_item ($artnr, $num) {

if ($this->items[$artnr] > $num) {

$this->items[$artnr] -= $num;

return true;

} else {

return false;

}

}

}

?>

 

如上所示,定義了一個名字為Cart的class。這個class由多個描寫物品的數(shù)組和添加項目、刪除項目的函數(shù)組成。

 

Class是一種類型,這就是說,它是實際變量的設(shè)計藍圖。您可以根據(jù)設(shè)計建立一個變量組和針對它們的一些新的操作。示例如下:

 

$cart = new Cart;

$cart->add_item("10", 1);

 

如上所示,建立了一個類型為class Cart的對象$cart。這個對象中的函數(shù)add_item()被調(diào)用來添加一個物品號為10的項目。

 

Class可以使用其他的Class來擴展。這個擴展的或者繼承的class(類)擁有基本class所有的變量和函數(shù)同時您還可以在其中加如您自己做的擴展定義。要這樣定義需要使用擴展定義的關(guān)鍵詞。

 

class Named_Cart extends Cart {

var $owner;

function set_owner ($name) {

$this->owner = $name;

}

}

 

以上定義了一個名字為Named_Cart的class(類),這個類擁有所有包含于類Cart中的變量和函數(shù),同時還添加了一個變量$owner和函數(shù)set_owner()。您可以建立一個有名字的cart,同時獲得cart的擁有者名字。您還可以在類Named_Cart中,使用普通的屬于類cart的函數(shù)。

 

$ncart = new Named_Cart; // Create a named cart

$ncart->set_owner ("kris"); // Name that cart

print $ncart->owner; // print the cart owners name

$ncart->add_item ("10", 1); // (inherited functionality from cart)

 

在這個類的函數(shù)中變量$this表示這個對象。在當前的對象中,您可以使用$this->something來訪問任何變量和函數(shù)。

 

當您建立一個新的類時,有一個構(gòu)造器函數(shù)將被自動的調(diào)用。如果某個函數(shù)的名字和類的名字一樣,那么它就成為構(gòu)造器:

 

class Auto_Cart extends Cart {

function Auto_Cart () {

$this->add_item ("10", 1);

}

}

 

在上面的例子中,定義了一個名字為Auto_Cart的類,它是在原來的類Cart中加上了一個構(gòu)造器函數(shù),這個構(gòu)造器函數(shù)初始化了類Cart使用的方法是:在每次建立一個類的時候添加一個物品號為10的一個項目。構(gòu)造器還可以顯示一些信息,這些信息可以被隨意的挑選,這使他們可以變的十分的有用,

 

class Constructor_Cart {

function Constructor_Cart ($item = "10", $num = 1) {

$this->add_item ($item, $num);

}

}

// Shop the same old boring stuff

$default_cart = new Constructor_Cart;

// Shop for real...

$different_cart = new Constructor_Cart ("20", 17);






相關(guān)文章