搜索
首页php教程php手册PHP MySQL开发中的一些经验

以下这些tips,是我在实际工作中慢慢形成的,有些可能是不正确的,有些出于个人习惯,所以,千万不要把以下这些条当成什么标准,其中可能隐藏着天大的bug,代码可能正在病态的运行中,SO!请一定仔细的看过后想想,这么做的好处是什么?会产生怎样的负面影响?

开发习惯和PHP代码

  1. 准确的理解各种概念。现在的新东西层出不穷,望文生义和一知半解对开发工作有害无益;
  2. 代码美观,适当的空行、缩进,空格,这样能更容易理解代码段的意思;
  3. 一定要写注释,而且要恰当的注释,要不然后面的维护工作或者接手代码的人会痛哭不已;
  4. 静态方法、类访问权限、接口、抽象类应该综合起来使用,发挥各自特点;
  5. 不要复制粘贴,即使是要用到现成的代码,也要一行一行的审阅后,再加入到新项目,因为经验告诉我们,这太容易出错了,对于使用开源类这种大段代码更需要;
  6. 变量都要初始化;
  7. 不要只处理error,而忽略warning和notice,这可能会导致日后的莫名其妙的问题,项目在开发状态下应该是error_reporting( E_ALL ^ E_NOTICE ),等到发布的外网生产环境时,应关闭所有错误报告display_errors=Off,error_reporting(0)网友 pAUL gAO分享了他们更合理的方案,error_reporting(E_ALL | E_STRICT),并且在生产环境中记录错误日志。
  8. 记录一些必要的错误日志,比如写文件失败、写memcache失败,socket连接失败、读写数据库失败,日志能够帮助出现问题时的快速定位,外部生产环境我个人是强烈建议关闭所有错误报告的;
  9. 用try、catch捕获异常,对代码的健壮有帮助,常常在API接口中碰到,这样子显得友好多了;
  10. 双引号中出现的变量建议加上大括号,至于是"${nider}at gmail.com"还是"{$tom}at zendstudio.net"看个人习惯,我更喜欢后面一种;
  11. 尽量少的if else嵌套层数,也许你要表达一个非常复杂的逻辑算法,但这样做至少能让代码逻辑更清晰
  12. 多阅读网上开源项目的优秀代码(不是优秀项目的开源代码),吸取其中值得借鉴的地方
  13. 语言包用sprintf的格式化来做是多么惬意的一件事啊!
  14. 写缓存并不总是要先serialize一次的
  15. AJAX传数据的时候,不要将数据库查出的数组直接json_encode后传给客户端,这样做不仅有一定的安全风险(字段名暴露),而且一些不需要的数据被传出浪费带宽,这条同样适用于API接口
  16. 要记得处理魔术变量,我的方法是直接关闭,当然也可以获取开关状态来避免传输数据被处理两次的问题
  17. 用$GLOBALS['var']代替global $var
  18. 不能轻易的die掉程序,尤其是在方法内部
  19. require、require_once、include、include_once有着略微不同的应用场景
  20. 为了最大限度的使得写入缓存成功,可以结合重试次数+usleep,我一般重试3次,还不行那就记下一条log了
  21. PHP的常量是个非常好的东西,很多开源项目中用一整个文件来定义要用到的常量
  22. 尽可能的使用绝对路径寻找文件
  23. autoload是个很灵活的东西
  24. 最好用上set_error_handler和set_exception_handler,那显得你的项目更完美
  25. PHP的引用类型是很高效的,在进行复杂运算时建议使用
  26. @符号抑制错误是很耗性能的,因此尽可能的找到替代方案

MySQL部分

  1. SQL语句用双引号,其中的值都用单引号,例如"INSERT INTO gril SET money='{$iMaxMoney}',age='18′"
  2. 用mysqli扩展代替mysql扩展
  3. 用mysqli_real_escape_string和mysqli_escape_string处理传出sql语句中的变量
  4. 用mysqli_set_charset(mysqli->set_charset)代替 query "SET NAMES"
  5. 联合查询(JOIN)之前,考虑下各个表的数据量,不合适的话应该分开查,尤其是有缓存可用的时候
  6. 很多地方需要记录发生时间,但不是每一个表都需要,同样,不是每一个表都需要一个自增量作主键
  7. 很多时候为integer类型加上unsigned是很好的
  8. INERT DELEYED、INSERT IGNORE、SELECT DISTINCT…这种语句通常有意想不到的好效果
  9. varchar类型并不是不能超过255长度,而是超过了255,这个字段就不能建立索引了,所以,看你的实际需要了

暂时就想到这么多,等再想到的继续update吧。想到什么写什么,没有什么条理性,多多包涵了,如果这些对你有点滴帮助,那我就感到非常开心了。

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。