为了账号安全,请及时绑定邮箱和手机立即绑定

php数组键名 直接使用目录名 VS md5(目录名)?

php数组键名 直接使用目录名 VS md5(目录名)?

吃鸡游戏 2019-04-16 20:26:16
static$funcs=array();......$key=md5($path);if(isset($funcs[$key]))returntrue;if(file_exists(PC_PATH.$path)){includePC_PATH.$path;}else{$funcs[$key]=false;returnfalse;}$funcs[$key]=true;returntrue;上述代码是对include_once的优化,在每次include$file的时候都将$file放入$funcs中,避免重复导入。那么问题是:$key=md5($path);是什么依据,感觉这么做没什么意义。
查看完整描述

2 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

首先我觉得这么做是没意义的,不会比直接用include_once更好。
然后这是一个比较常见的设计(虽然我觉得在这里没有什么意义),在需要通过key来查找value时,如果没有获取key的需要,那么可以将key散列之后作为key,这样可以:
避免因为key含有特殊的字符,或者为空造成一些诡异的错误
避免因为key很长而占用大量的内存
                            
查看完整回答
反对 回复 2019-04-16
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

存储上考虑,md5值整齐,长度一致,path可能会很长
~~效率上考虑,path很可能前面很长一段都是一样的,比如../../lib/service/database/...,而md5值比较离散,一般比较开头1~2个字符就可以确定是否不同~~
谢楼下指正,第2点描述不正确。翻了下源码,array内部确实对key已经有了hash操作,所以这里多一次md5的hash没有太大必要
                            
查看完整回答
反对 回复 2019-04-16
  • 2 回答
  • 0 关注
  • 356 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信