W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
首先,確保您已將XHP庫安裝為項目的依賴關(guān)系 - 這定義了XHP的各種核心類和標(biāo)準(zhǔn)HTML組件。
XHP是一種用于創(chuàng)建實際Hack對象的語法,稱為XHP對象。它們意在用作樹,孩子可以是其他XHP對象或文本節(jié)點。
而不是使用new運算符,創(chuàng)建XHP看起來非常像XML:
$my_xhp_object = <p>Hello, world</p>;
$my_xhp_object現(xiàn)在包含一個:p類的實例- 初始:標(biāo)記為XHP類,但在實例化時不需要。這是一個真正的對象,意思是is_object()返回true,你可以調(diào)用它的方法。
下面的例子使用了三個XHP類::div,:strong,:i??崭袷俏⒉蛔愕赖?,所以你可以在你的代碼中創(chuàng)建一個可讀的樹結(jié)構(gòu)。
<?hh
function basic_usage_examples_basic_xhp(): void {
var_dump(
<div>
My Text
<strong>My Bold Text</strong>
<i>My Italic Text</i>
</div>
);
}
basic_usage_examples_basic_xhp();
Output
object(xhp_div)#5 (5) {
["tagName":protected]=>
string(3) "div"
["attributes":"xhp_x__composable_element":private]=>
object(HH\Map)#6 (0) {
}
["children":"xhp_x__composable_element":private]=>
object(HH\Vector)#7 (3) {
[0]=>
string(9) " My Text "
[1]=>
object(xhp_strong)#12 (5) {
["tagName":protected]=>
string(6) "strong"
["attributes":"xhp_x__composable_element":private]=>
object(HH\Map)#13 (0) {
}
["children":"xhp_x__composable_element":private]=>
object(HH\Vector)#14 (1) {
[0]=>
string(12) "My Bold Text"
}
["context":"xhp_x__composable_element":private]=>
object(HH\Map)#15 (0) {
}
["source"]=>
string(91) "/data/users/joelm/user-documentation/guides/hack/24-XHP/02-basic-usage-examples/basic.php:9"
}
[2]=>
object(xhp_i)#19 (5) {
["tagName":protected]=>
string(1) "i"
["attributes":"xhp_x__composable_element":private]=>
object(HH\Map)#20 (0) {
}
["children":"xhp_x__composable_element":private]=>
object(HH\Vector)#21 (1) {
[0]=>
string(14) "My Italic Text"
}
["context":"xhp_x__composable_element":private]=>
object(HH\Map)#22 (0) {
}
["source"]=>
string(92) "/data/users/joelm/user-documentation/guides/hack/24-XHP/02-basic-usage-examples/basic.php:10"
}
}
["context":"xhp_x__composable_element":private]=>
object(HH\Map)#8 (0) {
}
["source"]=>
string(92) "/data/users/joelm/user-documentation/guides/hack/24-XHP/02-basic-usage-examples/basic.php:11"
}
在var_dump()該對象的樹已創(chuàng)建項目-不是一個HTML / XML字符串。可以通過簡單地使用echo/ print()或通過調(diào)用生成HTML字符串$xhp_obect->toString()。
迄今為止的例子只顯示了靜態(tài)內(nèi)容,但通常需要包括在運行時生成的東西; 為此,您可以直接在XHP中使用Hough表達(dá)式與大括號:
<xhp_class>{$some_expression}</xhp_class>
這也適用于屬性:
<xhp_class attribute = {$ some_expression} />
還支持更復(fù)雜的表達(dá)式,例如:
<?hh
class MyBasicUsageExampleClass {
public function getInt(): int {
return 4;
}
}
function basic_usage_examples_get_string(): string {
return "Hello";
}
function basic_usage_examples_get_float(): float {
return 1.2;
}
function basic_usage_examples_embed_hack(): void {
$xhp_float = <i>{basic_usage_examples_get_float()}</i>;
$a = new MyBasicUsageExampleClass();
echo (
<div>
{(new MyBasicUsageExampleClass())->getInt()}
<strong>{basic_usage_examples_get_string()}</strong>
{$xhp_float /* this embeds the <i /> element as a child of the <div /> */}
</div>
);
}
basic_usage_examples_embed_hack();
Output
<div>4<strong>Hello</strong><i>1.2</i></div>
像HTML一樣,XHP支持XHP對象上的屬性。XHP對象可以具有零到無限數(shù)量的可用屬性。XHP類定義了該類對象可用的屬性。
echo <input type =“button”name =“submit”value =“OK”/>;
這里的:input類有屬性type,name并且value作為其屬性的一部分。
某些屬性是必需的,如果您使用沒有該屬性的必需屬性的XHP對象,則XHP會拋出錯誤。
為了編碼一個保留的HTML字符或不容易獲得的字符,您可以在XHP中使用HTML字符引用。
<?hh
echo <span>♥ ♥ ♥</span>;
以上使用HTML字符參考編碼,使用顯式名稱,十進(jìn)制符號和十六進(jìn)制符號打印出心形符號。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: