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很长而占用大量的内存
犯罪嫌疑人X
TA贡献2080条经验 获得超4个赞
存储上考虑,md5值整齐,长度一致,path可能会很长~~效率上考虑,path很可能前面很长一段都是一样的,比如../../lib/service/database/...,而md5值比较离散,一般比较开头1~2个字符就可以确定是否不同~~谢楼下指正,第2点描述不正确。翻了下源码,array内部确实对key已经有了hash操作,所以这里多一次md5的hash没有太大必要
添加回答
举报
0/150
提交
取消