2012-03-30 55 views
-3

美好的一天。爲什麼可以寫這樣的php語句?PHP基本語法

<?php if (is_home()) { ?> 
//some code 
<?php } ?> 

謝謝。

+5

因爲它是一個有效的語法 – 2012-03-30 07:46:57

+0

請詳細說明。你爲什麼認爲這不應該被允許? – 2012-03-30 07:47:31

+0

有趣的問題......我想Lardorf先生肯定會給你一個獎爲這一點。 – 2012-03-30 07:47:40

回答

0

的網頁服務器的PHP解釋器處理自上而下。

,如果這是你的網頁的全部,解釋會踢在1號線和處理,如果,代碼塊,然後按如下(即開括號),那麼PHP解釋暫停,而括號之間一切都在舉行一個緩衝區。一旦找到第三行並且可以關閉塊,處理器就會繼續。它可以(如果條件爲真)輸出'// some code'文本(因爲它實際上不是代碼,它只是普通的html),或者不輸出任何內容。

2

PHP實際上最初設計爲模板語言。更多的PHP這裏的歷史(這是非常有趣的閱讀):)。

例如,在PHP 2及以下的語法是這樣的:

<!--include /text/header.html--> 

<!--getenv HTTP_USER_AGENT--> 
<!--ifsubstr $exec_result Mozilla--> 
    Hey, you are using Netscape!<p> 
<!--endif--> 

<!--sql database select * from table where user='$username'--> 
<!--ifless $numentries 1--> 
    Sorry, that record does not exist<p> 
<!--endif exit--> 
    Welcome <!--$user-->!<p> 
    You have <!--$index:0--> credits left in your account.<p> 

<!--include /text/footer.html--> 

我的想法是,人們發現這種類型的模板語言是很容易使用,很容易理解。隨着PHP的改進,變得更像傳統語言以及接收OOP功能,「模板化」仍然允許您使用<?php ?>來混合PHP代碼和HTML標記以封裝您的PHP代碼。

因此,解釋程序只會評估<?php ?>之間的代碼位,將這些標記留在這些標記之外,然後將其發送給客戶端。

0

語法固然有點怪異,因爲雖然//some code不是PHP代碼的一部分,它仍然是依賴於它的流量表。

它更清楚地認爲?><?php不是PHP的關閉和打開標記,而是作爲混合html/text的開始和結束標記。

?> // some code <?php實際上是相同的echo "//some code";