精良的PHP代码该当是构造化的。大段的代码该当被分割整理成一个个函数、方法,而那些不起眼的小段代码则该当加上注释,以便日后清楚它们的用场。而且该当尽可能地把前台代码如HTML、CSS、Javascript等从程序等分离出来。PHP的面向工具编程特性可以很好地帮助程序员将代码整理有序。
精良的PHP代码该当是规范化的。无论是为变量名和函数名设定命名规则,还是对一些会重复利用的过程如数据库操作和缺点处理进行标准化,抑或是大略到规定好代码是若何缩进的,这些规范化都可以让代码的可读性大大提高。
精良的PHP代码该当是自适应的。PHP有许多特性如magic quotes和short tags,这些特性的打开和关闭会影响到程序的运行。以是,一个好的程序员该当在他的代码中加如适当的语句来使程序能够根据环境进行调度。
精良的PHP代码该当是安全的。虽然PHP是一种高效、灵巧的措辞,没有固定的框架,但却把安全问题留给了程序员们。对潜在安全漏洞的深刻理解,如跨站脚本攻击(XSS)、跨站要求假造(CSRF)、代码注入漏洞、字符编码循环漏洞等,对付本日的专业程序员来说是至关主要的。
当应聘者在回答这些问题的时候,我就能清楚地知道是否该任命他。当然,有时程序员并不能很好地阐明这个问题,这时我们会让他们做一些PHP测试。测试中的许多问题表面上看起来非常大略,但这也给了应聘者们一个展现自我的机会,由于只要不雅观察得仔细,就能找出问题。
下面这一小段“劣质”的PHP代码是一道简化了的测试题。这种问题就像在问:你该若何优化这段代码?
<?echo(\"大众<p>Search results for query: \"大众 .$_GET['query'] . \"大众.</p>\"大众);?>
这段代码的紧张问题在于它把用户提交的数据直接显示到了网页上,从而产生XSS漏洞。实在有很多方法可以补充这个漏洞。那么,什么代码是我们想要的呢?
<?echo(\"大众<p>Search results for query: \"大众 .htmlspecialchars($_GET['query']) . \"大众.</p>\"大众);?>
这是最低哀求。XSS漏洞用htmlspecialchars函数补充了,从而屏蔽了造孽字符。
<?php if (isset($_GET['query'])) { echo '<p>Search results for query: ', htmlspecialchars($_GET['query'], ENT_QUOTES), '.</p>'; } ?>
能写出这样代码的人该当是我想要任命的人了。
<?被更换成了<?php,这样更符合XML规范。
在输出$_GET['query']的值之前先判断它是否为空。
echo命令中多余的括号被去掉了。
字符串用单引号限定,从而节省了PHP从字符串中搜索可更换的变量的韶光。
用逗号代替句号,节省了echo的韶光。
将ENT_QUOTES标识通报给htmlspecialchars函数,从而担保单引号也会被转义。虽然这并是最紧张的,但也算是一个良好习气。
作者:PHP架构之路
链接:https://www.jianshu.com/p/53c7c244e130