PHP踩坑之旅,这些事情千万不要在PHP开发中继续做了

宅同学整理了新手朋友php学习与开发中可能踩到的坑,希望可以给大家一些指引,这些事情千万不要在开发中继续做了
用记事本编辑php文件早些年能用记事本编程是一些人自我吹嘘的资本,能用记事本编程就是牛逼的代名词。但是这里要告诫大家的是,千万不要使用windows自带的记事本编辑任何文本文件。用windows记事本编辑php文件会造成一些意想不到的错误,就是因为其给文件增加的bom头被php执行的时候当作了内容输出。
php是不支持有bom的,php文件应该保存为utf-8无bom类型,所以在保存 utf8 编码php文件时,不要使用 bom。
用@屏蔽错误消息用@屏蔽错误消息的做法非常低效,我们可以使用error_reporting(0)来关闭错误报告。如果觉得每行这样写麻烦,还可以配置php.ini文件,搜索display_errors = on,默认是on表示开启报错功能,改为off。
其实我们应该正视编程中的所有所有错误级别的错误,在开发环境中,处理注意(notices)、警告(warnings)、致命错误(fatal errors)的所有错误,现在thinkphp、laravel都是默认开启error_reporting(e_all)的,那么咱们就别掩耳盗铃,用@屏蔽错误消息。
变量比较用==字符串是否相同建议用 === 而非 ==,因为这个比较是弱类型。两个值比较时,php会先尝试判别左右两者是否为数字。在数值类型与字符串比较时,甚至一些数字开头的非数值串,比如 12==12这个串 得到的值也会是 true。这些情况下,可能会使本来并不相同的字符串被判定为相等。而使用===比较则为包含类型的比较,不会有任何转换,所以是可以准确比较字符串是否相同的。
忽略单引号双引号的区别php在双引号包围的字符串中搜寻变量,单引号则不会。双引号里面的字段会经过编译器解释后之后输出,单引号里面的不进行解释,直接输出。要输出的字符串有和变量重名的,就必须用单引号避免解析。
使用退出历史舞台的 mysql_ 函数家族php 7已经把mysql_ 函数从核心中全部移除了,你需要开启mysqli扩展或者pdo_mysql扩展,如果使用的laravel则必须开启pdo_mysql扩展。也就是说你需要迁移到mysqli_函数,或者更灵活的pdo实现。
文件末尾使用php闭合标签php手册中标记章节告诉我们php代码都会以导致 php 开始输出这些空白,而脚本中此时并无输出的意图。
php 并不需要文件末尾的闭合标签,并且我们可以通过去掉它来保证不会在后面添加任何的空白字符。这也是为什么我们在html模板中用
滥用引用传递按值传递中原来参数的值在调用其他函数之后还是原来的值,而引用传递则是改变了原来的值。
按照按值传递的做法来传值时,如果需要原来的值发生改变,则需要在进行代码复制,若是值够大或者是一大串字符串时,会使代码比较多,重复,而引用传递则不需要复制php代码,对提高性能这一个方面有很大的优势,但是其它情况下它使代码变得难懂,并且更难预测结果。
在循环中执行查询在循环中执行查询非常浪费。它给你的系统施加不必要的压力,并且可能能够在循环外部更快获得相同结果。当我遇到需要这样的情况时,我通常会使用两个分离的查询来解决问题,我会使用它们来构建数据数组。之后我会遍历数组,并不需要在这个过程中执行查询。我们应该时刻避免编写的程序与数据库有过多的交互,在循环中执行查询意味着每次循环都要执行相应的查询,数据库负担不起如此沉重的负担。
依赖mysql数据库毫无疑问mysql数据库在php编程中的重要性仅次于php语言本身,可以说没有mysql就没有php今天的火爆,lamp架构是刻在每一个phper骨髓里的。
php7发布以来,php的运行速度可以说突飞猛进,实测php7比php5性能提升了4倍,但是这并不能确定的说用php7开发的项目比用php5开发的项目性能能提升4倍,因为程序与mysql交互是有瓶颈的,不是程序有多少请求mysql就能处理多少,它在一些特殊情况下,如秒杀场景中mysql已经不适用,学会使用nosql数据库将会是必要的。
重新发明轮子php生态发展日趋完善,有许多优秀的轮子被制造出来并被免费分享,基本都是可以商业应用的,github,码云,packagist应该是我们亲密的伙伴,有什么需要,就先问问小伙伴有没有可以用的轮子吧。
另外别忘了composer这个大管家(包管理器),在php开发中,只需要一行命令就可以让composer为我们的项目安装一个轮子,并且找到这个轮子用到的轮子一并安装。
信任用户的输入信任用户的输入是不明智的。我们开发者并没有考虑每种可能性,它通常不正确,以及它可能是蓄意破坏。
对于用户的输入,前端验证、后端验证是用户输入验证的必须环节,千万不要只做前端验证或者只做后端验证。正确的做法是同时使用前后端验证,并且保持前后端验证队则一致。比如要求用户名必须为大于8位且不能包含特殊字符的字符串,这个条件就要在前后台都验证用户输入的长度不能小于8位,不能包含特殊字符。前端验证完毕允许用户提交数据,数据提交到后端再次验证,以确保输入数据的正确性。
php是世界上最好的web编程语言对于一个phper来讲,php是世界上最好的web编程语言,对于学习java、python、及其他编程语言可能会被认为这毫无意义,因为它们在你的舒适区和工作所需范围之外。但对于想进一步提升编程水平的朋友来说,是时候抛弃语言成见,重新认识编程开发,取百家之长,完善自己的知识体系。
每种语言都有一些要学习的实用的东西,以及从没碰到的新知识。这对于phper技能进阶尤为重要,通过不同语言的学习去总结编程思想,去印证php学习中的所学所想,会有一种豁然开朗的感觉。
以上。
大家在php开发过程中还踩过那些坑呢,欢迎留言交流。


旅行时尚简约洗漱包防水化妆包收纳包 粉白条纹手提化妆箱收纳箱
青岛爱迪福:夏季猪应激怎么办?可以从这5方面预防!
甘肃陇南1000型自动批墙机墙壁切割机多少钱
DMH 百级净化对开门干热灭菌柜
上虞到常熟汽车客车物流
PHP踩坑之旅,这些事情千万不要在PHP开发中继续做了
拿本科学历的主要意义
新车超百万的路虎揽胜运动版,为什么2年车龄7折也没人买?
5-HTP试剂盒,5-羟基色氨酸试剂盒BOSK厂家推荐
贵人酒家小程序系统开发模式
激光测距传感器
艾美特 CA18-X1电风扇怎么样,质量好吗,网友这样回答
石家庄uv光氧净化器价格服务至上就在云靖
俊鸟游戏打造地方游戏好评不断
福州工业门厂家告诉你工业门工作的原理
水蒸汽发生器高温蒸汽
青海【欧米妃窗帘加盟】订做安装,唯美时尚 现代流行
闸北区回收名酒名烟、烟酒礼品高价回收普陀
FXBW-110/70悬式绝缘子生产技术一流厂家
加盟沙格轻食抓住餐饮市场商机