2016-01-28 59 views
-5

示例代碼中的問題:PHP結束標記和邏輯文件

<?php 
function foo($x) { 
    ?> // <-- PHP end tag in question 
    <ul> 
    <li>Coffee</li> 
    <li>Tea</li> 
    <li>Milk</li> 
    </ul> 
    <?php 
    return ; 
} 
?> 

我試圖決定,如果這是一個可以接受的編碼標準/編碼在PHP邏輯文件的做法,什麼是缺點這種方法與其他html打印/製作方案相比較。

+1

@NSNoob號,[示例代碼是題外話,在代碼審查](http://codereview.stackexchange.com/help/on-topic)。 – Mast

+0

哦對。從來沒有用過它,所以不知道。抱歉。 +1 – NSNoob

+0

儘管我不喜歡內聯html(並且從未在函數中使用過),但我認爲你的代碼與php編碼標準完全一致。順便說一句,這是一個[重複的問題](http://stackoverflow.com/questions/5940428/is-inline-html-valid-inside-a-php-function) – fusion3k

回答

0

您提供的邏輯是不可接受的。

你可以這樣做:

<? 
function foo($x) { 
$var = <<<END 
    <ul> 
    <li>Coffee</li> 
    <li>Tea</li> 
    <li>Milk</li> 
    </ul> 
END; 
    echo $var; 
} 

foo(); 

// OR You Can do this: 
function foo2($x){ 

$var = <<<END 
    <ul> 
    <li>Coffee</li> 
    <li>Tea</li> 
    <li>Milk</li> 
    </ul> 
END; 
return $var; 
} 
echo foo2(); 
//If the function is only intended for printing just use global variables as you haven't used the $x argument.. 
?> 

*另外請注意,你不能有空格

<<<END 

之後和之前的

END; 

正因爲如此我的避風港不會將它們縮到函數的右側。

+1

爲什麼認爲原始不可接受? – user5851922

+0

原始的工作,但你提供的功能是一個靜態函數,它返回的只是一個字符串,這裏的邏輯是你可以用html保存一個字符串,並在任何你想要的地方回顯。沒有必要在功能上做到這一點。 –

+0

我編輯了我的答案。如果你願意,你可以告訴我你願意使用該功能的什麼,我將相應地編輯我的答案。 –

0

有關於PHP Strings的文檔,您會發現非常有用。它解釋了單引號,雙引號,heredoc和nowdoc語法之間的區別。我不想邀請對這個問題的意見,但我不認爲你所演示的方法是非常常用的。

0

該函數沒有返回值,所以試圖將它與字符串concaternation techneques結合使用是不可能的。

例如:

function bar() { 
    $concat = "Give me " . foo(null) . " please" ; 
} 

將輸出

  • 咖啡
  • 牛奶