2012-11-26 100 views
-3

我最近升級了我的服務器(本地WAMP和生產箱到PHP 5.4),並且使用了分號擴展,我沒有抱怨我對此沒有愛;但不知道該代碼如何在本地運行,並且在沒有錯誤的生產環境中運行,並且錯誤報告設置爲E_ALL ...我以爲PHP需要分號碼嗎?

我以爲我需要一個;之後<? phpinfo ?> < - 顯然不是!

這不會產生錯誤之一:<? print_r(apache_get_modules()) ?>

這個工作沒有分號,以及:<? foreach (getallheaders() as $name => $value) printf("%s:%s \n", $name, $value, PHP_EOL) ?>

所有這些代碼並不代錯誤,而像我朋友的遺漏;我想知道WTF在發生什麼?

是因爲我的PHP 5.4版本還是做phpinfo,print_r和printf不需要分號?

所有這些代碼的運行沒有任何錯誤:

<div id="tabs"> 
    <div id="tab_one"><pre>Server Variables: <? print_r($_SERVER) ?></pre></div> 
    <div id="tab_two"><pre>Server and PHP interface: <?= PHP_SAPI ?></pre></div> 
    <div id="tab_three"><pre>Apache Modules: <? print_r(apache_get_modules()) ?></pre></div> 
    <div id="tab_four"><pre><?= apache_get_version() ?></pre></div> 
    <div id="tab_five"><pre><? foreach (getallheaders() as $name => $value) printf("%s:%s \n", $name, $value, PHP_EOL) ?></pre></div> 
    <div id="tab_six"> 
     <p><a href="/server-status?refresh=3" target="_blank">Server Status</a></p> 
     <br /> 
     <p><a href="/server-info/" target="_blank">Server Info</a></p> 
    </div> 
</div> 

Cornfused?

+3

你問我 –

回答

2

根據"Instruction Separation" in the PHP manual

PHP代碼塊的結束標記自動意味着以分號;你不需要用分號來終止PHP塊的最後一行。

+0

檢查谷歌,但結果是不同的,我cornfused爲... 我95%肯定,如果它不是一個速記回聲<?= {}東西?>分號隱含地需要(至少在PHP 5.2.X中)... PHP 5.3或5.4有什麼改變? 欣賞響應! –

+0

@BillJobs:哦,你做了Google? O.K.,然後+1。 :-)至於PHP版本。 。 。我不確定是否可以在線獲得舊版本的PHP手冊,但是我可以訪問運行PHP 5.2.17的計算機,而「<?回聲「foo」?>'在那裏工作得很好。我在[PHP 5 Changelog](http://www.php.net/ChangeLog-5.php)中沒有看到這方面的任何信息。 – ruakh

+0

ruakh,很好的回覆。諷刺語言必須是你的主要編程語言,做得好,出色,做得好。超級,非常感謝。幹得好,歡呼聲。真棒,史詩般的工作。你做的很好,是Stack Overflow的重要貢獻者。真棒。保持! –