PHP3中文文檔(續(xù)3)
發(fā)表時(shí)間:2024-06-22 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]任何PHP腳本語(yǔ)言都是使用連續(xù)的語(yǔ)句創(chuàng)建的。一個(gè)語(yǔ)句可以是一個(gè)賦值語(yǔ)句,一個(gè)函數(shù)調(diào)用,一個(gè)循環(huán),一個(gè)條件語(yǔ)句甚至一個(gè)不做任何事情的語(yǔ)句(一個(gè)空的語(yǔ)句)。語(yǔ)句經(jīng)常使用分號(hào)(;)結(jié)尾。另外,利用卷支持可以把一組語(yǔ)句壓縮從而使語(yǔ)句可以被組成語(yǔ)句組。一個(gè)語(yǔ)句組是一個(gè)關(guān)于自身的申明。不同的語(yǔ)句類(lèi)型將在本章被...
任何PHP腳本語(yǔ)言都是使用連續(xù)的語(yǔ)句創(chuàng)建的。一個(gè)語(yǔ)句可以是一個(gè)賦值語(yǔ)句,一個(gè)函數(shù)調(diào)用,一個(gè)循環(huán),一個(gè)條件語(yǔ)句甚至一個(gè)不做任何事情的語(yǔ)句(一個(gè)空的語(yǔ)句)。語(yǔ)句經(jīng)常使用分號(hào)(;)結(jié)尾。另外,利用卷支持可以把一組語(yǔ)句壓縮從而使語(yǔ)句可以被組成語(yǔ)句組。一個(gè)語(yǔ)句組是一個(gè)關(guān)于自身的申明。不同的語(yǔ)句類(lèi)型將在本章被描述。
常量
PHP定義了一些常量提供給結(jié)構(gòu)使它能夠在運(yùn)行時(shí)定義更多的類(lèi)型。常量和變量十分的類(lèi)似,但是他們?cè)谡Z(yǔ)法上有些微的不同。
被預(yù)定義的常量是__FILE__ 和__LINE__,在處理他們時(shí),會(huì)發(fā)現(xiàn)他們與文件名和行號(hào)相符合。請(qǐng)參考如下示例:
Example 6-1. Using __FILE__ and __LINE__ //使用__FILE__ 和__LINE__
<?php
function report_error($file, $line, $message) {
echo "An error occured in $file on line $line: $message.";
}
report_error(__FILE__,__LINE__, "Something went wrong!");
?>
您可以使用函數(shù)define() 和undefine()來(lái)定義其它的常量。
Example 6-2. Defining Constants //定義常量
<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // outputs "Hello world."
undefine ("CONSTANT");
?>
表達(dá)式
表達(dá)式是PHP最重要的基石。在PHP中,您所寫(xiě)的幾乎所有的內(nèi)容都是表達(dá)式。最簡(jiǎn)單同時(shí)也是最精確的定義一個(gè)表達(dá)式的方法是“任何內(nèi)容都有它的值”。
立刻進(jìn)入大腦的簡(jiǎn)單例子是:常量和變量。當(dāng)您輸入“$a = 5”,您就把值“5”賦給了變量“$a”,明顯的,獲得這個(gè)數(shù)值5,或者說(shuō)’5’是一個(gè)值為5的表達(dá)式(在這個(gè)例子中,’5’是一個(gè)整數(shù)常量)。
賦值以后$a的值是5, 因此如果你這樣寫(xiě)$b = $a,你它同$b = 5所表達(dá)的意思是一樣的.換句話(huà)說(shuō),$a是一個(gè)值為5的表達(dá)式.如果一切工作正常,這些將是所發(fā)生的一切.
再稍微復(fù)雜一點(diǎn)的表達(dá)式的例子是函數(shù)(function) .例如,考慮以下下面的函數(shù):
function foo () {
return 5;
}
假設(shè)你熟悉函數(shù)的概念(如果你不熟悉,看一下第四章),你可能假設(shè)$c=foo()從本質(zhì)上說(shuō)同$c=5是一致的,你是正確的.函數(shù)是以他們的返回值為值得表達(dá)式.既然foo()返回5,表達(dá)式’foo()’的值就是5。一般來(lái)說(shuō),函數(shù)不會(huì)僅僅返回一個(gè)態(tài)的值,他們一般都計(jì)算一些東西。
當(dāng)然,PHP里面的值不必須是整數(shù),并且經(jīng)常他們不是PHP支持三種標(biāo)量類(lèi)型的數(shù)值:整數(shù),浮點(diǎn)數(shù),和字符串。(標(biāo)量值是不能被再分為更小部分的數(shù)值,例如它不能是數(shù)組)。php也支持兩種合成類(lèi)型的數(shù)值:數(shù)組和對(duì)象。每一種數(shù)據(jù)類(lèi)型都能被賦值給變量或者通過(guò)函數(shù)返回。
迄今為止,PHP/FI 2的用戶(hù)不應(yīng)該感覺(jué)到任何改變。然而,PHP把表達(dá)式帶入了一個(gè)更深的層次,如同許多其它語(yǔ)言所作的一樣。PHP是一種面向表達(dá)式的語(yǔ)言,幾乎每一件事都是一個(gè)表達(dá)式.考慮一下我們已經(jīng)處理過(guò)的表達(dá)式“$a=5”.可以非常容易的看出這里包含了兩個(gè)值,常量’5’的值,和$a的值。$a的值也已經(jīng)被更新成5。但是事實(shí)是這里還有一個(gè)額外的值包含其中,并且這個(gè)值就是賦值語(yǔ)句本身.這個(gè)賦值語(yǔ)句本身計(jì)算所賦值的數(shù)值,在這個(gè)例子中是5。實(shí)際上,它意味著“$a=5”,不管他做什么,是一個(gè)值為5的表達(dá)式。因此,一些像’$b=($a=5)’的表達(dá)式,實(shí)際上同’$a=5;$b=5’(分號(hào)代表表達(dá)式的結(jié)束)是一樣的.既然賦值語(yǔ)句被以從右到左的順序解析,你還可以這樣寫(xiě)’$b=$a=5’。
另一個(gè)很好的表達(dá)式的例子是前和后遞增量的方向性.PHP/FI 2的用戶(hù)和許多其他語(yǔ)言的用戶(hù)也許對(duì)符號(hào)(variable(變量)++和variable--)非常熟悉.這些就是遞增和遞減符號(hào).在PHP/FI 2中,語(yǔ)句’$a++’沒(méi)有任何值(不是一個(gè)表達(dá)式),并且因此你不能給它賦值或以任何方式來(lái)使用它.PHP通過(guò)發(fā)展這些表達(dá)式加強(qiáng)了遞增(increment)/遞減(decrement)的能力,像c語(yǔ)言中一樣.在PHP中,有兩種遞增形式-前遞增和后遞增.這兩種遞增本質(zhì)上都是使變量加1,并且對(duì)變量的影響都是一樣的.他們的區(qū)別是遞增表達(dá)式本身的值.前遞增的形式是’++$variable(變量)’,計(jì)算遞增值(PHP 在讀出它的值之前遞增變量的值,因此叫前遞增)后遞增的形式是’$variable++’,在變量遞增前計(jì)算$variable的原始值(PHP先讀出變量的值,然后再遞增,因此叫后遞增).
表達(dá)式的最后一個(gè)例子我們將處理組合操作符賦值表達(dá)式.你已經(jīng)知道了如果你想將變量$a的值加1,你可以簡(jiǎn)單的寫(xiě)成’$a++’或’++$a’.但是如果你想加的數(shù)值不只是1呢,例如3?你可以多次使用’$a++’,但是很明顯這樣不是一個(gè)有效的,簡(jiǎn)潔的方式.通常的方法是這樣寫(xiě)’$a=$a+3’. ’$a=$a+3’計(jì)算變量$a加3后的值,并且被重新賦值給了變量$a,最終的結(jié)果是變量$a的值加了3.在PHP中,如同像C一樣的其它一些語(yǔ)言,你可以用更簡(jiǎn)短的方式來(lái)做這些.給變量$a的當(dāng)前值加3可以寫(xiě)’$a+=3’.這個(gè)表達(dá)式正確的意思是”讀出$a的值,加3,然后把它賦值給$a”.除了更加簡(jiǎn)潔和簡(jiǎn)略外,這樣的語(yǔ)句執(zhí)行起來(lái)速度更快.表達(dá)式’$a+=3’的值,像一個(gè)正則賦值語(yǔ)句的值.是被賦予的值.注意它不是3,而是$a+3的組合的值(這是一個(gè)被賦給$a的值).任何二元操作符都可以被用來(lái)組合成復(fù)合賦值操作符.例如,’$a-=5’($a=$a-5),’$b*=7’($b乘以7),等等.
如果你沒(méi)有在其它語(yǔ)言中加過(guò)的話(huà),你會(huì)認(rèn)為下面的表達(dá)式看起來(lái)非常奇怪.這就是三元條件算子:
$first ? $second : $third
如果第一個(gè)子表達(dá)式的值為真的話(huà)(非0),那么他的第二個(gè)子表達(dá)式將被計(jì)算,并且這就是整個(gè)條件表達(dá)式的值.否則,第三個(gè)子表達(dá)式將被預(yù)算,結(jié)果作為整個(gè)條件表達(dá)式的值.
下面的例子可以幫助你大體上理解前,后遞增和表達(dá)式.
function double($i) { return $i*2;}
$b = $a = 5; /* 把5賦值$a和$b */
$c = $a++; /* 后遞增, 把$a的原始值(5)賦值給$c */
$e = $d = ++$b; /* 前遞增, 把經(jīng)過(guò)遞增操作的$b的值(6)賦值給$e和$d */
/* 這時(shí),$d和$e都等于(6) */
$f = double($d++); /* 把$d的原始值(6)加倍,然后賦值給$f.$f等于(12)*/
$g = double(++$e); /* 先把$e執(zhí)行遞增操作,然后加倍, 2*7 = 14賦值給$g*/
$h = $g += 10; /* 首先,$g加10,并且最終結(jié)果是24.將這個(gè)值賦值給$h,并且$h最終的結(jié)果也是24.*/
在本章的一開(kāi)始,我們就說(shuō)過(guò)”我們將描述各種類(lèi)型的語(yǔ)句”.表達(dá)式可以成為語(yǔ)句,然而,并不是每一個(gè)表達(dá)式都是一個(gè)語(yǔ)句.既然這樣,一個(gè)語(yǔ)句具有’expr’’;’的形式,一個(gè)表達(dá)式加上一個(gè)分號(hào).在’$b=$a=5;’中,$a=5是一個(gè)有效的表達(dá)式,但是他不能由他自己構(gòu)成一個(gè)語(yǔ)句.但是’$b=$a=5;’卻是一個(gè)有效的語(yǔ)句.
最后一個(gè)值得提起的事情是一個(gè)表達(dá)式的值的真假.在很多事件中,主要在條件執(zhí)行和循環(huán)中,你對(duì)表達(dá)式的確切的值并不感興趣,你僅僅對(duì)他是否以為著 TRUE(真)或FALSE(假)(PHP沒(méi)有專(zhuān)門(mén)的boolean類(lèi)型).在PHP中計(jì)算表達(dá)式的真假的方式同perl非常相似.任何非零的數(shù)值都是TRUE,零是FALSE!注意負(fù)數(shù)也非零,所以也為真!空字符串和字符’0’為FALSE;所有其他字符串為T(mén)RUE.對(duì)于非標(biāo)量的數(shù)值(數(shù)組或?qū)ο?-如果值沒(méi)有包含任何元素,則被認(rèn)為為FALSE,否則為T(mén)RUE.
PHP提供了一個(gè)完整而且強(qiáng)大的表達(dá)式工具,并且完全說(shuō)明他已經(jīng)超出了本手冊(cè)的范圍.關(guān)于表達(dá)式是什么,你怎么才能構(gòu)造一個(gè)有效的表達(dá)市,上面的例子應(yīng)該給了你一個(gè)很好的提示.貫穿這個(gè)手冊(cè)的其余部分,我們將用’expr’代表有效的PHP表達(dá)式.
IF
IF結(jié)構(gòu)是任何語(yǔ)言中最重要的特性之一,PHP也包括了它。它允許進(jìn)行條件判斷同時(shí)執(zhí)行相應(yīng)的程序段。PHP中IF語(yǔ)句的特性和C是十分類(lèi)似的:
if (expr)
statement
在對(duì)該表達(dá)式片段的描述后,會(huì)判斷表達(dá)式的值是否為真。如果表達(dá)式的值為真,PHP會(huì)執(zhí)行該語(yǔ)句,如果該值為假,那么PHP將會(huì)跳過(guò)該語(yǔ)句。
接下來(lái)的例子中如果$a比$b大,那么將顯示“a is bigger than b”。
if ($a > $b)
print "a is bigger than b";
通常的情況,是用戶(hù)希望使用不只一條語(yǔ)句被有條件的執(zhí)行。當(dāng)然,在這里沒(méi)有必要對(duì)每一個(gè)語(yǔ)句使用IF條件判斷。用戶(hù)可以使用一組語(yǔ)句來(lái)實(shí)現(xiàn)這個(gè)功能。例如,如果$a比$b大,那么下面的代碼將顯示“a is bigger than b”,同時(shí)將$a的值賦給$b。
if ($a > $b) {
print "a is bigger than b";
$b = $a;
}
IF語(yǔ)句可以嵌套在另一個(gè)IF語(yǔ)句之中,利用這一點(diǎn),用戶(hù)可以根據(jù)不同的情況執(zhí)行程序中不同的部分。
ELSE
通常,可能在條件符合時(shí)希望運(yùn)行某個(gè)語(yǔ)句,而在條件不符合時(shí)希望運(yùn)行另一段程序。這就是ELSE語(yǔ)句的作用。ELSE擴(kuò)展了IF語(yǔ)句的作用,當(dāng)條件為假時(shí),ELSE后面的語(yǔ)句將被執(zhí)行。例如,接下來(lái)的程序段將在$a大于$b的時(shí)候顯示“a is bigger than b”,在其他的情況下顯示“a is NOT bigger than b”。
if ($a > $b) {
print "a is bigger than b";
} else {
print "a is NOT bigger than b";
}
ELSE語(yǔ)句并不僅僅起到在IF表達(dá)式值為假的時(shí)候執(zhí)行語(yǔ)句的作用,如果在它后面接上IF的話(huà),就成為了ELSEIF語(yǔ)句,使用它可以進(jìn)一步的分析假的情況(見(jiàn)下文)。
ELSEIF
正如它的名字所暗示的,ELSEIF是IF和ELSE的組合。和ELSE一樣它擴(kuò)展了IF語(yǔ)句對(duì)FALSE(假)的處理。但是和ELSE不一樣的是,ELSEIF將已經(jīng)為假的條件再進(jìn)行一次判斷,并根據(jù)判斷的結(jié)果進(jìn)行處理。例如,下列代碼在$a>$b的情況下將顯示“a is bigger than b”,當(dāng)$a不大于$b的時(shí)候就再進(jìn)行一次判斷,如果$a==$b,將顯示“a is equal to b”,如果$a<$b將顯示“a is smaller than b”。
if ($a > $b) {
print "a is bigger than b";
} elseif ($a == $b) {
print "a is equal to b";
} else {
print "a is smaller than b";
}
在同一個(gè)IF語(yǔ)句中可以有多個(gè)ELSEIF語(yǔ)句。第一個(gè)ELSEIF表達(dá)式(if any)如果為真,那么將被執(zhí)行。在PHP3中,您也可以寫(xiě)成“else if”(使用兩個(gè)詞)同時(shí)效果和使用“elseif”(一個(gè)詞)是一樣的。他們的語(yǔ)言?xún)H僅有些微的不一樣(如果您熟悉C語(yǔ)言的話(huà),您會(huì)發(fā)現(xiàn)這個(gè)不一樣和在C中類(lèi)似)但是最終他們的結(jié)果是完全一樣的。
ELSEIF語(yǔ)句僅僅在IF語(yǔ)句或前一個(gè)ELSEIF的表達(dá)式為假,同時(shí)當(dāng)前的ELSEIF語(yǔ)句表達(dá)式為真的情況下執(zhí)行。
IF語(yǔ)句的交互語(yǔ)法:IF().. ..ENDIF
PHP3提供了一種不同的方法在IF語(yǔ)句中建立語(yǔ)句組。這種方式在您將HTML嵌套進(jìn)IF語(yǔ)句中非常常見(jiàn),但是您可以將著種方法應(yīng)用到任何位置。除了使用{}之外,IF表達(dá)式可以跟隨一個(gè)冒號(hào),一個(gè)或多個(gè)語(yǔ)句,然后使用ENDIF結(jié)尾;請(qǐng)注意如下的例子:
<?php if ($a==5): ?>
A = 5
<?php endif; ?>
在上面所示的例子中,利用交互語(yǔ)法,HTML語(yǔ)句“A = 5”被嵌套進(jìn)了IF語(yǔ)句之中。這個(gè)HTML語(yǔ)句會(huì)在$a為5的時(shí)候被顯示。
這種交互語(yǔ)法也可以應(yīng)用在ELSE和ELSEIF語(yǔ)句之中。接下來(lái)的例子是使用交互格式的IF、ELSEIF和ELSE語(yǔ)句。
if ($a == 5):
print "a equals 5";
print "...";
elseif ($a == 6):
print "a equals 6";
print "!!!";
else:
print "a is neither 5 nor 6";
endif;
WHILE
WHILE循環(huán)是PHP3中循環(huán)的一個(gè)簡(jiǎn)單例子。它和在C中的表現(xiàn)完全一樣,WHILE語(yǔ)句基本的結(jié)構(gòu)如下所示:
WHILE(expr) statement
WHILE語(yǔ)句的的含義是十分簡(jiǎn)單的。它告訴PHP在WHILE表達(dá)式為真的情況下反復(fù)的執(zhí)行嵌套的語(yǔ)句。表達(dá)式的值在每一次循環(huán)開(kāi)始的時(shí)候被檢查,所以即使這個(gè)值在執(zhí)行嵌套的語(yǔ)句時(shí)被更改了,執(zhí)行過(guò)程將不會(huì)被終止,直到結(jié)束該次循環(huán)為止。有些情況下,WHILE表達(dá)式的值在開(kāi)始就是假,那么這些嵌套的語(yǔ)句將一次也不會(huì)被執(zhí)行。
和使用IF語(yǔ)句類(lèi)似,您可以在同一個(gè)WHILE循環(huán)中使用多個(gè)語(yǔ)句作為一個(gè)組,使用{ }或類(lèi)似于下文的語(yǔ)法:
WHILE(expr): statement ... ENDWHILE;
在下面的兩個(gè)例子實(shí)現(xiàn)的功能是相同的,即打印了從1到10的所有數(shù)字:
/* example 1 */
$i = 1;while ($i <= 10) {
print $i++; /* the printed value would be
$i before the increment
(post-increment) */
}
/*example 2 */
$i = 1;
while ($i <= 10):
print $i;
$i++;
endwhile;
DO..WHILE
DO..WHILE循環(huán)和WHILE循環(huán)是十分類(lèi)似的,除了真值檢查是在每個(gè)循環(huán)過(guò)程最后進(jìn)行的外。這里最主要的不同就是對(duì)于DO..WHILE循環(huán),它和標(biāo)準(zhǔn)的WHILE循環(huán)不一樣,它的第一個(gè)循環(huán)過(guò)程總是會(huì)被執(zhí)行的(由于真值檢查是在最后被執(zhí)行的)。標(biāo)準(zhǔn)的WHILE循環(huán)中的第一個(gè)語(yǔ)句不一定被執(zhí)行(由于真值檢查是在循環(huán)開(kāi)始時(shí)進(jìn)行的)。
這兒是使用DO..WHILE循環(huán)語(yǔ)句的一個(gè)例子:
$i = 0;
do {
print $i;
} while ($i>0);
上文的循環(huán)僅僅會(huì)被執(zhí)行一次,在第一次循環(huán)執(zhí)行完畢之后,檢查表達(dá)式為假($I并不比0大)此時(shí)循環(huán)就會(huì)被終止。
高級(jí)的C語(yǔ)言使用者對(duì)使用DO..WHILE循環(huán)的不同之處會(huì)有很深的理解,為了允許在代碼段的執(zhí)行過(guò)程中終止執(zhí)行,可以使用將他們加入DO..WHILE(0)語(yǔ)句中,再使用BREAK語(yǔ)句的方法。下面代碼段說(shuō)明了這一點(diǎn):
do {
if ($i < 5) {
print "i is not big enough";
break;
}
$i *= $factor;
if ($i < $minimum_limit) {
break;
}
print "i is ok";
...process i...
} while(0);
如果您對(duì)這些都不是很明白的話(huà),也不必?fù)?dān)心。您可以在不使用這些特性的情況下編寫(xiě)出很強(qiáng)有力的代碼。
FOR
在PHP中FOR循環(huán)是最復(fù)雜的循環(huán)。它的特性和它在C語(yǔ)言中的表現(xiàn)類(lèi)似。FOR循環(huán)的語(yǔ)法如下:
FOR (expr1; expr2; expr3) statement
第一個(gè)表達(dá)式expr1將在循環(huán)開(kāi)始時(shí)無(wú)條件的被求解執(zhí)行;
在每一個(gè)循環(huán)開(kāi)始的時(shí)候,第二個(gè)表達(dá)式將被執(zhí)行。如果它的值為真,則該循環(huán)將繼續(xù)下面嵌套語(yǔ)句的執(zhí)行。如果它的值為假,則循環(huán)結(jié)束;
在每個(gè)循環(huán)的最后第三個(gè)表達(dá)式將被執(zhí)行。
任何一個(gè)表達(dá)式都可以是空的,當(dāng)表達(dá)式二(expr2)是空的時(shí)候,意味這這個(gè)循環(huán)運(yùn)行的次數(shù)將是不確定的(PHP和C一樣默認(rèn)該表達(dá)式為真)。這種做法并不象您想象的那樣沒(méi)有用,因?yàn)樵谟行┣闆r下您可能希望使用帶條件的BREAK語(yǔ)句來(lái)取代FOR的真值判斷來(lái)作為終止循環(huán)的方法。
注意下面的幾個(gè)例子,所有的這些語(yǔ)句顯示了從1到10的數(shù)字:
/* example 1 */
for ($i = 1; $i <= 10; $i++) {
print $i;
}
/* example 2 */
for ($i = 1;;$i++) {
if ($i > 10) {
break;
}
print $i;
}
/* example 3 */
$i = 1;for (;;) {
if ($i > 10)
{ break;
}
print $i;
$i++;
}
/* example 4 */
for ($i = 1; $i <= 10; print $i, $i++) ;
當(dāng)然,看上去第一個(gè)例子最好(或者是第四個(gè)例子),但是您將發(fā)現(xiàn)在許多場(chǎng)合使用空表達(dá)式的FOR循環(huán)是十分方便的。
在FOR循環(huán)中PHP也支持交互的“冒號(hào)語(yǔ)法”。例如:
FOR (expr1; expr2; expr3): statement; ...; endfor;
其他有FOR語(yǔ)句的語(yǔ)言往往使用該語(yǔ)句來(lái)處理數(shù)組。在PHP中使用WHILE語(yǔ)句和list()和each()函數(shù)來(lái)做這件事情。請(qǐng)參考這些函數(shù)相關(guān)的例子。
BREAK
BREAD 跳出當(dāng)前的循環(huán)體,提前結(jié)束循環(huán).
$i = 0;
while ($i < 10) {
if ($arr[$i] == "stop") {
break;
}
$i++;
}
CONTINUE
CONTINUE結(jié)束本次循環(huán),跳到循環(huán)體的開(kāi)始處,接著進(jìn)行下一次循環(huán)的判定.
while (list($key,$value) = each($arr)) {
if ($key % 2) { // skip even members
continue;
}
do_something_odd ($value);
}
SWITCH
在實(shí)際問(wèn)題中常常需要用到多分支的選擇.你可以使用多重嵌套的IF語(yǔ)句來(lái)處理,但如果分支較多,則嵌套的IF語(yǔ)句層數(shù)多,程序冗長(zhǎng)而且可讀性降低.PHP中提供SWITCH語(yǔ)句來(lái)直接處理多分支選擇.
下面的兩個(gè)例子使通過(guò)兩種不同的方式來(lái)實(shí)現(xiàn)同一件事,一個(gè)使用了一系列的IF語(yǔ)句,另外一個(gè)使用了SWITCH語(yǔ)句:
/* example 1 */
if ($i == 0) {
print "i equals 0";
}
if ($i == 1) {
print "i equals 1";
}
if ($i == 2) {
print "i equals 2";
}
/* example 2 */
switch ($i) {
case 0:
print "i equals 0";
break;
case 1:
print "i equals 1";
break;
case 2:
print "i equals 2";
break;
}