[译]怎样的代码才算是好的PHP代码

文章分类:PHP  查看次数:342 + 88

原文地址:click here

挑主要的翻译了一下

怎样的代码才算是好的php代码?这个问题并没有确定的完美的答案,但一个有经验的php编程人员,应该能想到以下几个方面

好的php代码应该是结构化的。大块的代码应该能够被分为几个函数,以此来达到同样的目的。功能不是很明显的函数应该被加上注释。同时应该将前端(如html,js,css等)与服务端代码分离开来。php的oop特性对此给予了足够的支持。

好的php代码应该遵循命名规范。也就是说变量名或函数名应该遵循各自的命名规范,采用标准的数据库连接和错误处理方法。确保代码的缩进一致。是你的代码方便阅读。

好的php代码应该是兼容的。PHP有很多的特性,比如"magic quotes"或者"short tags",它们的状态对于差的代码是很有影响的。所以应该在写代码的时候考虑到这些因素。

好的php代码应该是安全的。虽然PHP提供优良的性能和很好的灵活性,但是代码的安全,完全掌握在开发者的手中,比如常见的"跨站、注入、字符编码漏洞"等等。


下面来看一段差的代码

<?
echo("<p>Search results for query: " .
    $_GET['query'] . ".</p>");
?>
 

一个很重要的问题是用户的提交被直接输出($_GET['query']),导致了跨站(XSS)的出现,当然有很多的补救办法

好的办法

<?
echo("<p>Search results for query: " .
    htmlspecialchars($_GET['query']) . ".</p>");
?>
 

这是最基本的,处理用户的输入

更好的办法

<?php
if (isset($_GET['query']))
{
  echo '<p>Search results for query: ',
     htmlspecialchars($_GET['query'], ENT_QUOTES), '.</p>';
}
?>
 

这段代码看起来就比较符合我们的标准了

  • 将"<?"转换为更通用的"<?php",同时也免去了xml歧义
  • 在输出"$_GET['query']"之前,isset检测内容是否为空
  • 去掉了无意义的括号
  • 将双引号变为单引号,避免触发搜索时插入的变量
  • 将"."变为","表现上更科学(我感觉没啥必要)
  • 给htmlspecialchars函数增加了ENT_QUOTES参数,将引号也转义了,更加安全

评论

发表评论