根据文件和行(或类似的东西)生成ID

时间:2014-04-23 19:34:46

标签: php identifier

在我的程序中,我需要一种方法来创建唯一标识符(如哈希)。重要的是ID不是随机的,而是在调用相同的函数或方法之间相同。因此,如果某些文件中的某些行生成了标识符xyz,那么总是应该在这个地方生成相同的标识符。

我可以使用代码这样的指令:

$id = sha1(__FILE__ . __ LINE__);

但这还不够舒服。我更喜欢在C / C ++中使用一些函数或宏(我知道PHP没有宏),如下所示:

$id = generate_id();

generate_id可以如下实现。它工作正常,但我不相信在生产代码中使用函数debug_backtrace。也许有更好的解决方案?

function generate_id()
{
   $backtrace = debug_backtrace();
   return sha1($backtrace[0]['file'] . $backtrace[0]['line']);
}

1 个答案:

答案 0 :(得分:0)

如果您的目的是根据文件获得可重复的哈希值,那么PHP使用md5_file()方法可以满足您的需求。

$file = 'myfile.txt';
echo 'MD5 file hash of ' . $file . ': ' . md5_file($file);

只要文件内容没有改变,每次生成MD5哈希都是相同的。