国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開發(fā) > PHP > 正文

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

2024-05-04 23:05:38
字體:
供稿:網(wǎng)友

    為了理解switch語(yǔ)句為了躲避語(yǔ)句冗長(zhǎng),知道它如何被執(zhí)行的是非常重要的.switch語(yǔ)句石一行一行     執(zhí)行的(事實(shí)上,是一條語(yǔ)句一條語(yǔ)句).在開始時(shí),沒有代碼被執(zhí)行.僅僅當(dāng)一個(gè)值于switch表達(dá)式的語(yǔ)句的值相同的case語(yǔ)句被發(fā)現(xiàn)后,php繼續(xù)執(zhí)行語(yǔ)句直到switch體的結(jié)束,或者出現(xiàn)了break語(yǔ)句.如果你在一個(gè)分支語(yǔ)句的后面沒有寫break語(yǔ)句,php將繼續(xù)執(zhí)行下面分支的語(yǔ)句.例如:

 

/* 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將會(huì)執(zhí)行所有打印語(yǔ)句.如果$i等于1,php將會(huì)執(zhí)行剩下的兩個(gè)打印語(yǔ)句,并且僅僅當(dāng)$i等于2的時(shí)候,你才能得到你期望的執(zhí)行結(jié)果,只有’i equals 2’被顯示.因此不要在每一個(gè)分支語(yǔ)句的后面忘記break語(yǔ)句(即使你在一定的環(huán)境下有可能想避免提供他們).

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

 

/* 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";

}

 

    另外一個(gè)值得一提的事實(shí)是case表達(dá)式可以是任何計(jì)算標(biāo)量類型的表達(dá)式,也就是說,整型或?qū)嵭秃妥址?數(shù)組和對(duì)象將不會(huì)導(dǎo)致php崩潰,但是他們沒有沒有任何意義.

 

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

    require ('header.inc');

     

include
    include語(yǔ)句包括和計(jì)算指定文件.

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

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

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

include($files[$i]);

}

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

    因?yàn)閕nclude()是一個(gè)特殊的語(yǔ)言結(jié)構(gòu),你必須在一個(gè)語(yǔ)法塊中封閉它,如果它在一個(gè)條件塊中.

 

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

 

if ($condition)

include($file);

else

include($other);

 

/*下面是正確的. */

 

if ($condition)

{

include($file);

}

else {

include($other);

}

 

    當(dāng)一個(gè)文件被計(jì)算的時(shí)候,語(yǔ)法分析將處在”html-模式”中,這個(gè)模式將輸出這個(gè)文件的內(nèi)容直到第一個(gè)php開始標(biāo)簽(<?)被遇到.

    參考 readfile(),virtual().

函數(shù)

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

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

echo "example function./n";

return $retval;

}

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

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

返回值

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

function my_sqrt ($num)

{

return $num * $num;

}

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

 

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

function foo()

{

return array (0, 1, 2);

}

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

參數(shù)

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

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

function takes_array($input) {

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

}

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

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

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

function foo( &$bar ) {

$bar .= ' and something extra.';

}

$str = 'this is a string, ';

foo ($str);

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

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

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.'

默認(rèn)值
    一個(gè)函數(shù)對(duì)于標(biāo)量參數(shù)可以定義c++-風(fēng)格的默認(rèn)值.

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.

    默認(rèn)值必須是一個(gè)常量表達(dá)式,不是一個(gè)變量或類成員.

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

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

return "making a bowl of $type $flavour./n";

}

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

    上面例子的輸出是:

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)在,用下面的對(duì)比上面的:

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

return "making a bowl of $type $flavour./n";

}

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

    這個(gè)例子的輸出是:

    making a bowl of acidophilus raspberry.

old_function

    old_function語(yǔ)句允許你聲明一個(gè)使用php/fi2 的語(yǔ)法的函數(shù)(你需要做的就是把’function’替換成’old_function’.

    這是一個(gè)不被贊成的特征,并且應(yīng)該僅僅被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

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

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

}

}

}

?>

 

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

 

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

 

$cart = new cart;

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

 

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

 

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

 

class named_cart extends cart {

var $owner;

function set_owner ($name) {

$this->owner = $name;

}

}

 

    以上定義了一個(gè)名字為named_cart的class(類),這個(gè)類擁有所有包含于類cart中的變量和函數(shù),同時(shí)還添加了一個(gè)變量$owner和函數(shù)set_owner()。您可以建立一個(gè)有名字的cart,同時(shí)獲得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)

 

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

 

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

 

class auto_cart extends cart {

function auto_cart () {

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

}

}

 

    在上面的例子中,定義了一個(gè)名字為auto_cart的類,它是在原來的類cart中加上了一個(gè)構(gòu)造器函數(shù),這個(gè)構(gòu)造器函數(shù)初始化了類cart使用的方法是:在每次建立一個(gè)類的時(shí)候添加一個(gè)物品號(hào)為10的一個(gè)項(xiàng)目。構(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);



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 酉阳| 栾川县| 库车县| 瓮安县| 太仓市| 越西县| 尚义县| 闽清县| 治县。| 从江县| 镇宁| 乐清市| 兴山县| 东丽区| 拉萨市| 大城县| 纳雍县| 长寿区| 四平市| 平乐县| 安泽县| 全南县| 宣汉县| 河东区| 玉林市| 浑源县| 彰化县| 兰西县| 德清县| 双城市| 黄骅市| 乌鲁木齐市| 万山特区| 门头沟区| 罗定市| 大同市| 曲周县| 杭锦旗| 昆明市| 鹤峰县| 民权县|