作者tanson (Flash)
看板PHP
標題Re: [請益]該如何避免HTML摻雜PHP寫法
時間Fri Oct 5 00:31:02 2012
※ 引述《PTTLSboy (阿銫)》之銘言:
: <select>
: <? for($i=0;$i<$a;$i++){ ?>
: <option> (略) </option>
: <? } ?>
: </select>
: 要如何避免以上這種 HTML+PHP 混在一起的寫法呢???
: 因為有不得不用PHP跑迴圈+HTML或JAVASCRIPT的需求
: 感謝!!
寫成物件導向的方式如何,例如:
class InputGenerator
{
static public function select($name, $value, $attr, $options)
{
$html = '<select name="' . $name . '">';
foreach($options as $key => $option) {
$selected = '';
if ($value == $key) {
$selected = 'selected';
}
$html .= '<option value="' . $key . '" ' . $selected . '>';
$html .= $option;
$html .= '</option>';
}
$html .= '</select>';
return $html;
}
}
暫且略過$attr html屬性設定的參數
使用時只要 require class至頁面,然後如以下方式
InputGenerator::select('name', '1', null, $enums);
便可產生所需的下拉選單
不然就是使用framework
像是Zend Framework 的view helper
讓頁面也乾淨許多
且就不必常使用for迴圈產生元素
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.45.92
1F:→ MOONRAKER:這明顯是完全不跟人配合,自己一個人做網站的寫法。我才 10/05 01:00
2F:→ MOONRAKER:不要在php內產生HTML... 10/05 01:00
3F:→ tanson:我想,就是因為是teamwork才更需要使用物件導向 10/05 01:16
4F:→ tanson:當teamwork時,如果可以將code縮減,並讓人清楚的知道每個 10/05 01:18
5F:→ tanson:物件的職責,不僅可以縮短project開發時間,日後也更好維護 10/05 01:19
6F:→ tanson:M大不喜歡由php產生html的目的為何,願聞其詳 10/05 01:21
7F:→ tanson:不要忘了ZF的view helper也是類似做法 10/05 01:23
8F:→ tkdmaf:這叫濫用物件好嗎?物件不是拿來這樣搞的。 10/05 07:46
9F:→ tkdmaf:如果你的SAMPLE CODE的內容是另外讀取HTML頁面的話。 10/05 07:47
10F:→ tkdmaf:我認為那才會是正解。 10/05 07:47
11F:推 B9: 這不算濫用物件啊,就只是個 static method 10/05 08:05
12F:→ B9: 跟設計一個 input_generator_select 是一樣的東西 10/05 08:05
13F:→ B9: static function 10/05 08:06
14F:噓 tkdmaf:我才不管他方法,而是他製造出一種困擾。 10/05 08:06
15F:→ tkdmaf:事實上我連ci的input相關功能都很少用。 10/05 08:08
16F:→ tkdmaf:在基於和網頁設計師的配合上 10/05 08:08
17F:→ tkdmaf:讓他們看得懂HTML而不是製造看不同的功能比較重要。 10/05 08:09
19F:噓 tkdmaf:類似!但我不能先做好htmlentities再放進陣列? 10/05 08:26
20F:→ tkdmaf:還有剛剛洗澡我才想到,form相關的ci是寫成函式。 10/05 08:27
21F:→ tkdmaf:而不是物件。 10/05 08:27
22F:→ tkdmaf:乾乾淨淨的純html顯示是工程師能帶給網編人員的方便。 10/05 08:28
23F:→ tkdmaf:而不是給他們感到困惑。 10/05 08:29
24F:→ tkdmaf:除了必要重覆的php code,我絕少在view中做其他處置。 10/05 08:29
25F:→ mervynW:我看到這種code我會叫過來念一頓. 要抓html&css問題還要 10/05 09:49
26F:→ mervynW:到php code裡找,當大家太閒啊. 10/05 09:50
27F:→ tkdmaf: ^^^^^^^^^^^^XD! 10/05 10:01
28F:→ Gakun:其實我覺得困擾還好 只是在於整個團隊有沒有明確的文件規範 10/05 10:04
29F:→ tkdmaf:但如果都是標準HTML顯示……不用文件規範吧。 10/05 10:11
30F:→ tkdmaf:難不成他的HTML和我的HTML規則不一樣? 10/05 10:11
31F:→ MOONRAKER:這種規範就是允許frontend來改我程式,我一定反彈。 10/05 11:17
32F:→ tkdmaf:如果你的code是讓我無所適從,我會讓你看看砍掉重練的驕傲 10/05 12:02
33F:→ mervynW:我跟frontend討論過, 他們不愛temp的迴圈 10/05 12:08
34F:→ tkdmaf:不愛的話就把迴圈放回controller或是model來處理。 10/05 12:24
35F:→ tkdmaf:變成只剩下變數顯示的純view了。 10/05 12:24
36F:→ tanson:這樣的話跟我的InputGenerator物件差別在哪= =? 10/05 12:38
37F:→ mervynW:不,傳json給forntend, 他們用js組 10/05 13:04
38F:→ tkdmaf:嗯!用js組的好處就是迴圈不吃伺服器資源吧! 10/05 13:31
39F:推 mervynW:還有User看到畫面快,雖然沒有內容 10/05 14:04