顯示廣告
隱藏 ✕
※ 本文為 layzer 轉寄自 ptt.cc 更新時間: 2013-06-13 09:08:10
看板 PHP
作者 tails32100 (Tails)
標題 Re: [請益] echo 資料的問題?
時間 Sun Jun  9 23:47:37 2013


※ 引述《joinbee (二老林)》之銘言:
:  echo "<td><a
: href='dispmessage.php?name=".$row_result["name"]."'>$row_result["name"]</a>
: </td>";
: 想請問一下上面這一行要怎麼寫才對,我對"跟'要怎麼分開一直搞不太清楚,請
: 各位高手指教一下?對了,錯誤訊息是
: Parse error: syntax error, unexpected '"', expecting identifier (T_STRING) or
: variable (T_VARIABLE) or number (T_NUM_STRING) in C:\xampp\htdocs\stock.php
: on line 41

小弟小小的講一下個人心得


假設想處理變數和字串的話:

先不管單引號(')和雙引號(")的效能差異
(效能有興趣看這篇:http://goo.gl/TjvxZ )
[分享] 使用單引號或雙引號 - 看板 PHP - 批踢踢實業坊
之前看過Eric的PHP優化建議
原文:
譯文: ...
 

小弟個人習慣是HTML屬性什麼的,都用雙引號(")
JavaScript比較少寫,不過也都是用雙引號(")
PHP程式裡,遇到字串通通都會用單引號('),變數會用串接(.)

所以程式碼通常都會像這樣: (just舉例而已,假設輸入的變數已處理過了)

e.g.:

$sql = 'SELECT ' . $column . ' FROM ' . $table;

$html = '<a href="' . $link . '"></a>';

$script = '
<script>
var str = "' . $php_var . '";
alert(str);
</script>
';
(程式碼上色好累,後面懶得用了 = 3=)


當然最大的好處是不會跟HTML或是Javascript的雙引號衝突
另外的好處就是變數直接串不用多想。
不用考慮什麼陣列,或是物件忘了加大括號的問題等。

e.g.:

$str = "{$arr['key']}";
$str = "{$obj->property}";

壞處顯而易見,要多打很多有的沒有的符號。
當然這單純只是提供個人習慣做參考而已。



或者是說可以反過來操作:

PHP端全都用雙引號,遇到變數全都加大括號,可能就很像Smarty那樣吧
( Smarty: http://www.smarty.net/ )
PHP Template Engine | Smarty
Smarty is a template engine for PHP. ...
 

e.g.:

$str = "Today is {$date}.";


覺得這樣做比較好的原因是:
有個統一化的做法,對於未來要看/改程式碼是有幫助的。





以上的寫法是建立在:如果要寫一個純粹只有PHP程式碼的時候。 (MVC 的 M & C)
所以上面的程式碼都沒有PHP tag (<?php ?>)

那回到最開始,因為原po程式碼有echo,所以應該是View
這樣的話會小弟只會在有PHP變數的地方用echo即可
也就是echo裡不會出現常數的字串

e.g.:

原始碼:
<?php echo '<a href="' . $link . '"></a>'; ?>

小弟會改寫成:
<a href="<?php echo $link; ?>"></a>


如此就可以完全避免PHP程式的單引號與雙引號的內鬥害Programmer鬥雞眼了XD
當然能避免的只有PHP的部分,HTML和JavaScript還是會有相同的問題啦
(如果PHP變數輸出有誤 當然還是要去debug PHP程式碼的部分了)


以上建議僅供參考,如果有更好的寫法可以一起來討論 :)

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.126.68.4
※ 編輯: tails32100      來自: 59.126.68.4          (06/09 23:48)
kerash:我習慣用 "{$var} xxx" 的用法,而且測試後發現處理速度比1F 06/09 23:53
kerash:較快,程式碼也比較容易閱讀。
tails32100:耶!? 原本以為"{$var} xxx"的陣列key不能用雙引號3F 06/10 00:01
tails32100:結果剛剛去試了一下是可以的 = 3=
tails32100:"{$arr["key"]}" 是可行的
tails32100:所以結論是:小弟要改習慣了XDDD
Bambe:我的習慣跟原po一樣 @@7F 06/10 12:54

--
※ 看板: layzer 文章推薦值: 0 目前人氣: 0 累積人氣: 403 
分享網址: 複製 已複製
e)編輯 d)刪除 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇