Re: [請益]該如何避免HTML摻雜PHP寫法

看板PHP作者 (Flash)時間11年前 (2012/10/05 00:31), 編輯推噓1(3234)
留言39則, 6人參與, 最新討論串3/6 (看更多)
※ 引述《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

10/05 01:00, , 1F
這明顯是完全不跟人配合,自己一個人做網站的寫法。我才
10/05 01:00, 1F

10/05 01:00, , 2F
不要在php內產生HTML...
10/05 01:00, 2F

10/05 01:16, , 3F
我想,就是因為是teamwork才更需要使用物件導向
10/05 01:16, 3F

10/05 01:18, , 4F
當teamwork時,如果可以將code縮減,並讓人清楚的知道每個
10/05 01:18, 4F

10/05 01:19, , 5F
物件的職責,不僅可以縮短project開發時間,日後也更好維護
10/05 01:19, 5F

10/05 01:21, , 6F
M大不喜歡由php產生html的目的為何,願聞其詳
10/05 01:21, 6F

10/05 01:23, , 7F
不要忘了ZF的view helper也是類似做法
10/05 01:23, 7F

10/05 07:46, , 8F
這叫濫用物件好嗎?物件不是拿來這樣搞的。
10/05 07:46, 8F

10/05 07:47, , 9F
如果你的SAMPLE CODE的內容是另外讀取HTML頁面的話。
10/05 07:47, 9F

10/05 07:47, , 10F
我認為那才會是正解。
10/05 07:47, 10F

10/05 08:05, , 11F
這不算濫用物件啊,就只是個 static method
10/05 08:05, 11F

10/05 08:05, , 12F
跟設計一個 input_generator_select 是一樣的東西
10/05 08:05, 12F

10/05 08:06, , 13F
static function
10/05 08:06, 13F

10/05 08:06, , 14F
我才不管他方法,而是他製造出一種困擾。
10/05 08:06, 14F

10/05 08:08, , 15F
事實上我連ci的input相關功能都很少用。
10/05 08:08, 15F

10/05 08:08, , 16F
在基於和網頁設計師的配合上
10/05 08:08, 16F

10/05 08:09, , 17F
讓他們看得懂HTML而不是製造看不同的功能比較重要。
10/05 08:09, 17F

10/05 08:24, , 18F
所以你每次寫 html 都這樣嗎? http://pastebay.net/1149249
10/05 08:24, 18F

10/05 08:26, , 19F
類似!但我不能先做好htmlentities再放進陣列?
10/05 08:26, 19F

10/05 08:27, , 20F
還有剛剛洗澡我才想到,form相關的ci是寫成函式。
10/05 08:27, 20F

10/05 08:27, , 21F
而不是物件。
10/05 08:27, 21F

10/05 08:28, , 22F
乾乾淨淨的純html顯示是工程師能帶給網編人員的方便。
10/05 08:28, 22F

10/05 08:29, , 23F
而不是給他們感到困惑。
10/05 08:29, 23F

10/05 08:29, , 24F
除了必要重覆的php code,我絕少在view中做其他處置。
10/05 08:29, 24F

10/05 09:49, , 25F
我看到這種code我會叫過來念一頓. 要抓html&css問題還要
10/05 09:49, 25F

10/05 09:50, , 26F
到php code裡找,當大家太閒啊.
10/05 09:50, 26F

10/05 10:01, , 27F
^^^^^^^^^^^^XD!
10/05 10:01, 27F

10/05 10:04, , 28F
其實我覺得困擾還好 只是在於整個團隊有沒有明確的文件規範
10/05 10:04, 28F

10/05 10:11, , 29F
但如果都是標準HTML顯示……不用文件規範吧。
10/05 10:11, 29F

10/05 10:11, , 30F
難不成他的HTML和我的HTML規則不一樣?
10/05 10:11, 30F

10/05 11:17, , 31F
這種規範就是允許frontend來改我程式,我一定反彈。
10/05 11:17, 31F

10/05 12:02, , 32F
如果你的code是讓我無所適從,我會讓你看看砍掉重練的驕傲
10/05 12:02, 32F

10/05 12:08, , 33F
我跟frontend討論過, 他們不愛temp的迴圈
10/05 12:08, 33F

10/05 12:24, , 34F
不愛的話就把迴圈放回controller或是model來處理。
10/05 12:24, 34F

10/05 12:24, , 35F
變成只剩下變數顯示的純view了。
10/05 12:24, 35F

10/05 12:38, , 36F
這樣的話跟我的InputGenerator物件差別在哪= =?
10/05 12:38, 36F

10/05 13:04, , 37F
不,傳json給forntend, 他們用js組
10/05 13:04, 37F

10/05 13:31, , 38F
嗯!用js組的好處就是迴圈不吃伺服器資源吧!
10/05 13:31, 38F

10/05 14:04, , 39F
還有User看到畫面快,雖然沒有內容
10/05 14:04, 39F
文章代碼(AID): #1GRRd87L (PHP)
討論串 (同標題文章)
文章代碼(AID): #1GRRd87L (PHP)