很多人说PHP是世界上最好的编程语言,好吧,我先不讨论这些这么争议性的话题,PHP这么简单快捷也同样有很多它的弱点。今天主要介绍一些小技巧,让你瞬间变得高大上。
1. 使用 ip2long() 和 long2ip() 函数将 IP 地址由字符串转换为整数存储到数据库。这样可以减少约四分之一(15字节的字符对比4字节的整数)的存储空间,更易于计算该 IP 地址的有效范围,而且还加速了搜索和排序的效率。
惊讶在办公室工作的女程序员
2. 通过 checkdnsrr() 函数来验证 Email 地址的 Domain 部分是否存在。此内置函数将检查指定域名是否解析到某一 IP 地址以验证其有效性。你可以在 PHP 文档的“用户评论”部分找到一个通过此函数来验证Email地址有效性的用户自定义函数。
3. 如果你正在使用 PHP5 和 MySQL 5及以上版本, 建议使用改进的 mysqli_* 函数代替 mysql_* 函数。它的一个优秀特性就是如果你正维护的网站非常依赖数据库的话,你可以用 mysqli_stmt_prepare 来提高查询的效率。附:一些测试
4. 熟悉,并喜欢三元运算符。
5. 项目中,有时候需要重写某一模块,建议你在重写之前先看看 PEAR。 PEAR 是一个非常重要的资源,许多 PHP 程序员都知道它,但更多的还不知道。它是一个在线的知识库,包含了400个以上可以良好的作用于PHP程序的可重用的代码片断。除非你的项目真的很“独特”,否则你应该能够找到一个 PEAR 包,至少它可以节约时间。(参考 PECL)
6. 使用 highlight_file() 输出一个被格式化和高亮的页面源代码复本。此函数很实用,尤其是在一些类似于留言薄,IRC等应用中。显然地,一些包含敏感信息诸如数据库连接,密码等信息的源文件需要引起注意。
7. 使用 error_reporting(0) 函数避免显示潜在的敏感信息给用户。理想的情况下,应该通过修改 php.ini 将错误报告完全地禁用。然而,如果你在一台多人共享的虚拟主机上,那么你便没有权限,所以最好的办法就是增加 error_reporting(0) 在每个脚本的第一行(或者通过 require_once() 包含它),如此当程序发生错误的时候,便可避免潜在的SQL查询语句和路径信息暴露给用户。
8. 存储一个大字符串到数据库之前,使用 gzcompress() 或 gzuncompress() 进行压缩/解压。此内建函数使用 gzip 算法,其明文压缩率可以达到 90%。几乎每次我用 PHP 读写一个 BLOB 字段的时候都会用到它们(除需要全文索引时)。
9. 通过引用参数从一个函数返回多个值。就像三元运算符一样,许多拘谨于编程背景的程序员早已知道它。但是,比起 Pascal 更了解 HTML 的程序员可能会为“如何从一个函数中返回多个值?难道我只能返回一个值吗?”的问题而困惑。这个问题你可以通过在变量前面加上“&”以引用来解决。
10. 完全地理解“magic quotes”和SQL注入所带来的危害。我希望众多开发人员在读到这篇文章之前就已经熟悉SQL注入。然而,我把它列在这里的原因就是它的重要性是绝对有必要知道的!
11. 循环内部不要声明变量,尤其是对象这样的变量。
12、foreach效率更高,尽量用foreach代替while和for循环。
13、循环里别用函数
for($x=0; $x < count($array); $x)
//count()函数在外面先计算
14、用i+=1代替i=i+1。符合c/c++的习惯,效率还高。
15、优化Select SQL语句,在可能的情况下尽量少的进行Insert、Update操作,达到PHP性能优化的目的。
16、尽量的少进行文件操作,虽然PHP的文件操作效率也不低的。
17、在可以用PHP内部字符串操作函数的情况下,不要用正则表达式。
// GOOD
$addr = strtr($addr, "abcd", "efgh");
// BAD
$addr = strtr($addr, array('a' => 'e', ));
?>
18、在可以用file_get_contents替代file、fopen、feof、fgets等系列方法的情况下,尽量用file_get_contents,因为它的效率高得多。但是要注意file_get_contents在打开一个URL文件时候的PHP版本问题。
19、Apache解析一个PHP脚本的时间要比解析一个静态HTML页面慢2至10倍。尽量多用静态HTML页面,少用脚本。
20、使用选择分支语句,switch case好于使用多个if,else if语句,并且代码更加容易阅读和维护。
21、当echo字符串时用逗号代替点连接符更快些。echo一种可以把多个字符串当作参数的“函数”。echo是语言结构,不是真正的函数,故把函数加上了双引号。例如:echo $str1,$str2
22、过渡到PHP7+版本,永远了解最新的特征,这是一个开发者基本素养