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

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);是什么依据,感觉这么做没什么意义。
吃鸡游戏
浏览 357回答 2
2回答

鸿蒙传说

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

犯罪嫌疑人X

存储上考虑,md5值整齐,长度一致,path可能会很长~~效率上考虑,path很可能前面很长一段都是一样的,比如../../lib/service/database/...,而md5值比较离散,一般比较开头1~2个字符就可以确定是否不同~~谢楼下指正,第2点描述不正确。翻了下源码,array内部确实对key已经有了hash操作,所以这里多一次md5的hash没有太大必要
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript