PHP逻辑编码风格

kal*_*l3v 2 php

我必须修改一个大型PHP应用程序的某些部分.当然,不同的部分是由不同的人(主要是实习生)编写的.查看代码后,我发现其他开发人员使用了2种编码样式:

  • 'PHP是互联网'的混合风格,混合了html和php,例如:

[剪断]

<tr class="ds_subsubhead_2">
<td colspan="21" align="left">&nbsp;A&nbsp;<select name="nb_linge" onChange="MM_jumpMenu('parent',this,0)" style="vertical-align:middle">       <option value="<?=get('index.php',$orgurl,'nb_ligne=','22','23','9999') ?>" <? if($messagesParPage == '9999') { ?>selected="selected"<? } ?>>Tous</option>
    <option value="<?=get('index.php',$orgurl,'nb_ligne=','22','23','25') ?>" <? if($messagesParPage =='25') { ?>selected="selected"<? } ?>>25</option>
    <option value="<?=get('index.php',$orgurl,'nb_ligne=','22','23','50') ?>" <? if($messagesParPage =='50') { ?>selected="selected"<? } ?>>50</option>
    <option value="<?=get('index.php',$orgurl,'nb_ligne=','22','23','75') ?>" <? if($messagesParPage =='75') { ?>selected="selected"<? } ?>>75</option>
Run Code Online (Sandbox Code Playgroud)

[snip]或

<td <? if((isset($_GET['t1']))&&($_GET['t2']!='ALL')) { ?>bgcolor="#0099FF"<? } ?>></td>
<td <? if((isset($_GET['t3']))&&($_GET['t4']!='ALL')) { ?>bgcolor="#0099FF"<? } ?>></td>
<td <? if((isset($_GET['t5']))&&($_GET['t6']!='ALL')) { ?>bgcolor="#0099FF"<? } ?>></td>
Run Code Online (Sandbox Code Playgroud)

[剪]甚至

<script type="text/javascript" src="<?=$_SESSION["path"]?>lib/js/ajax.js"></script>
Run Code Online (Sandbox Code Playgroud)

[剪断]

  • ......以及更具程序性的方式,例如:

[剪断]

     $output .= '<td valign="top"><form name="form5" method="GET" action=""><select name="m" onchange="this.form.submit()">';
     if ( empty($_GET['p']) ) $output .= '<option value=" ">All</option>';
     else $output .= '<option value='.$_GET['m'].'>'.$_GET['m'].'</option>';
     $query = "SELECT DISTINCT maoie FROM ".$BD."site";
     $res = mysql_query($query);
     while ( $row = mysql_fetch_assoc($res) ) {
         if( !empty($row['maoie']) ) $output .= '<option  value="'.$row['maoie'].'">'.$row['maoie'].'</option>'; 
     }
     $output .= '</select></form></td>';
     $output .= add_more_stuff();
     echo $output;
Run Code Online (Sandbox Code Playgroud)

现在,我并不完全确定这是一种更加程序化的方法,但至少它与前一种不同.您认为哪一个通常更好?

我个人而言,不喜欢'互联网'风格的胶水.

Aid*_*ell 5

我会抛弃两者并将PHP编码远离任何表示层特定的HTML.否则,对于比'Hello World'更大的东西,事情变得非常讨厌,很快

如果你想稍后修改代码,你就是在脚下拍摄自己.我会尝试通过移植到正确的CMS/Abstract演示文稿来解决这个问题.

看起来都不好.我不想在任何一种风格中维护代码.通过花时间现在正确清理它来节省时间.

即使是将HTML移动到外部加载的格式字符串并通过sprintf()或类似字符串运行它们的基本操作也可能比当前情况更好.而且你说你有这些编码风格的混合!?!

先生,祝你好运!

两种风格都应该降级为动态互联网成长之痛的坟墓.看一下开源PHP项目,看看一个好的,可维护的编码风格.像http://sourceforge.net/projects/wikipedia MediaWiki 这样的东西展示了HTML-In-Source和分离的良好组合(虽然它不是完美的恕我直言)