作者tkdmaf (皮皮快跑)
看板PHP
标题Re: [请益]该如何避免HTML掺杂PHP写法
时间Fri Oct 5 08:05:49 2012
※ 引述《tanson (Flash)》之铭言:
: 写成物件导向的方式如何,例如:
: 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回圈产生元素
你这个做法基本上只会造成其他写程式的人的困扰。
同时也带给美编或是网页人员设计上的困扰。
这次的主题来说最大的问题是在於所谓的「程式」和「页面」分离的问题。
在我的观念里,控制行为、资料库行为……等等的东西的确应该要和页面分离。
但所谓的程式并不是指你用上了「<?php」他就会是程式。
以本例必要的重覆html行为,事实上他表明了这是一个做为「连续显示」的行为。
这种情形之下所必要使用的for、foreach、while……等等回圈行为,
他仍然只能算是「页面」的一部份。
因为他并不是在控制整个程式走向。
而仅仅就为了「输出」这件事。
要不然真的要讲到完全程式和HTML分离
<td><?php echo $row['name']></td>
这东西岂不就完全违规了?
适当的view中放置符合於页面显示的php code,不仅仅对程式开发人员降低负担。
网页编辑人员也可以自由的去设计画面。
而不管是网页人员写好版面给程式设计师。
或是程式设计师先设计丑丑的表单再丢给网页设计人员去改。
都不会有什麽太大的问题。
但你包成class来做的话......
到底是在给谁难过?
给我吗?不会。因为我会把他整个砍掉。
framework一般的立意就在於MVC架构分离。
但是V就叫做VIEW,不叫做「HTML」。
VIEW不代表他完全不包含任何PHP语法。
VIEW只是告诉你不要拿来写程式流程,不要用来取资料库,不要用来做和「画面显示」
无关的行为。
http://www.codeigniter.org.tw/user_guide/general/alternative_php.html
连codeigniter都有提到关於变换句法的问题。
可以合理的理解他们将这几个php语法视为view的一部份的合理性。
不过ci的short tag处理法倒是蛮有趣的。(完全无视伺服器的设定)
(说穿了他不过就是把<?=$name?>在执行前换回<?php echo $name?>罢了)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 112.105.91.204
1F:推 chingfeng18:支持MCV架构,虽然俺目前的架构是MC V 10/05 10:17
2F:→ MOONRAKER:MC V 是不是MC混在一起的意思 |D 10/05 11:18
3F:→ chingfeng18:恩~~! 俺才刚学3个月!M的部份比较不懂 所以会在流程 10/05 13:15
4F:→ chingfeng18:+上资料库处理 囧RZ 10/05 13:16