由php if 想到的些问题


Posted in PHP onMarch 22, 2008
<?php  
/* PHP code */  
header("Content-type: text/javascript");  
if (!haveCookie('cookieName')) {  
   // ... do something  
?>  
/* Javascript code */  
if ('undefined' == typeof document.cookie['cookieName']) {  
    setCookie('cookieName', 3600);  
}     // ... do something with Javascript  
<?php  
}  
?>

粗看起来代码已经无懈可击,我们亲爱的 小马 还是发现了问题的存在。就是在 Javascript 中的那个判断是永远为 true
if ('undefined' == typeof document.cookie['cookieName']) {  
    // ...  
}

因为这段代码是在 PHP 端有个前提,就是

if (!haveCookie('cookieName'))的时候,才会在客户端显示。那么,当不满足这一条件,这段代码自然就不会扔给客户端。这样说似乎有点笼统,那么先撇开 Javascript 代码,我们就单纯使用 PHP 代码表述一下

<?php  
header("Content-type: text/javascript");  
if (!haveCookie('cookieName')) {  
   if (!haveCookie('cookieName')) {  
       setCookie('cookieName');  
   }  
}  
?>

这样就显得清晰了很多,并很容易就能发现问题所在 -- 我们在不经意间就多做了一次判断,虽然这是 Javascript 在客户端执行的。

总结下,本人从这段代码想到的些废话:

代码越长,不见得效率就越高
在不影响逻辑和流程的情况下,尽量将多个判断写在一起
尽量将低复杂度的函数放前判断
过多的判断容易造成程序效率降低,在判断中使用高时间复杂度的函数时尤其要注意
如果发现 if 嵌套得太多,就得重新考虑流程和算法
健壮的代码不是靠过分的判断保证而成的
将代码简化后,会发现很多还未发现的问题
过多的判断另个角度理解,是缺乏对代码的信心
最后,再次感谢 小马 同志。

PHP 相关文章推荐
解析php中如何直接执行SHELL
Jun 28 PHP
PHP实现今天是星期几的几种写法
Sep 26 PHP
小谈php正则提取图片地址
Mar 27 PHP
Codeigniter中禁止A Database Error Occurred错误提示的方法
Jun 12 PHP
php单例模式示例分享
Feb 12 PHP
基于CakePHP实现的简单博客系统实例
Jun 28 PHP
java模拟PHP的pack和unpack类
Apr 13 PHP
配置Nginx+PHP的正确思路与过程
May 10 PHP
PHP 使用二进制保存用户状态的实例
Jan 29 PHP
yii2 在控制器中验证请求参数的使用方法
Jun 19 PHP
PHP判断一个变量是否为整数、正整数的方法示例
Sep 11 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
Jan 26 PHP
php实现mysql数据库备份类
Mar 20 #PHP
php 常用字符串函数总结
Mar 15 #PHP
php str_replace的替换漏洞
Mar 15 #PHP
PHP执行速率优化技巧小结
Mar 15 #PHP
请php正则走开
Mar 15 #PHP
可以在线执行PHP代码包装修正版
Mar 15 #PHP
PHP Token(令牌)设计
Mar 15 #PHP
You might like
isset和empty的区别
2007/01/15 PHP
php之Memcache学习笔记
2013/06/17 PHP
php采用curl实现伪造IP来源的方法
2014/11/21 PHP
php实现大文件断点续传下载实例代码
2019/10/01 PHP
AJAX 网页保留浏览器前进后退等功能
2011/02/12 Javascript
jQuery之ajax技术的详细介绍
2013/06/19 Javascript
js post提交调用方法
2014/02/12 Javascript
js实现select跳转功能代码
2014/10/22 Javascript
javascript常用的方法整理
2015/08/20 Javascript
基于Bootstrap重置输入框内容按钮插件
2016/05/12 Javascript
AngularJS中$http服务常用的应用及参数
2016/08/22 Javascript
详解weex默认webpack.config.js改造
2018/01/08 Javascript
如何以Angular的姿势打开Font-Awesome详解
2018/04/22 Javascript
微信小程序分享功能之按钮button 边框隐藏和点击隐藏
2018/06/14 Javascript
BootStrap modal实现拖拽功能
2018/12/01 Javascript
小程序实现搜索框
2020/06/19 Javascript
[01:12]DOTA2 2015年秋季互动指南
2015/11/10 DOTA
利用python编写一个图片主色转换的脚本
2017/12/07 Python
python逆向入门教程
2018/01/15 Python
详解python读取image
2019/04/03 Python
使用Python正则表达式操作文本数据的方法
2019/05/14 Python
pycharm new project变成灰色的解决方法
2019/06/27 Python
pytorch dataloader 取batch_size时候出现bug的解决方式
2020/02/20 Python
使用keras实现孪生网络中的权值共享教程
2020/06/11 Python
魅力惠奢品线上平台:MEI.COM
2016/11/29 全球购物
迪奥官网:Dior.com
2018/12/04 全球购物
女孩每月服装订阅盒:kidpik
2019/04/17 全球购物
生产部经理岗位职责
2013/12/16 职场文书
商业融资计划书
2014/04/29 职场文书
共产党员岗位承诺书
2014/05/29 职场文书
营销学习心得体会
2014/09/12 职场文书
幸福家庭事迹材料
2014/12/20 职场文书
清明祭英烈活动总结
2015/05/11 职场文书
廉洁自律心得体会2016
2016/01/13 职场文书
《揠苗助长》教学反思
2016/02/20 职场文书
Python进阶学习之带你探寻Python类的鼻祖-元类
2021/05/08 Python