Php 基于文件和行输入(或类似内容)生成ID

Php 基于文件和行输入(或类似内容)生成ID,php,identifier,Php,Identifier,在我的程序中,我需要一种创建唯一标识符的方法(比如散列)。重要的是ID不是随机的,而是同一函数或方法调用之间的相同ID。因此,如果在某个文件的某一行中生成了标识符xyz,则应始终在此位置生成相同的标识符 我可以使用这样的指令代码: $id = sha1(__FILE__ . __ LINE__); 但这还不够舒适。我更喜欢在C/C++中使用一些函数或宏(我知道PHP没有宏),如下所示: $id = generate_id(); generate_id可以如下实现。它工作得很好,但我不相信在生

在我的程序中,我需要一种创建唯一标识符的方法(比如散列)。重要的是ID不是随机的,而是同一函数或方法调用之间的相同ID。因此,如果在某个文件的某一行中生成了标识符
xyz
,则应始终在此位置生成相同的标识符

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

$id = sha1(__FILE__ . __ LINE__);
但这还不够舒适。我更喜欢在C/C++中使用一些函数或宏(我知道PHP没有宏),如下所示:

$id = generate_id();
generate_id
可以如下实现。它工作得很好,但我不相信在生产代码中使用函数
debug\u backtrace
。也许有更好的解决办法

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

如果您的目的是基于文件创建一个可重复的散列,那么PHP有一个方法可以满足您的需要

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

只要文件内容不变,每次生成MD5哈希值时,MD5哈希值都是相同的。

或者,他需要MD5可以重复,无论更改如何,他都可以执行
MD5(\uuu DIR\uuu.DIRECTORY\u SEPARATOR.$file)
除了他们想要一个基于文件和文件中生成id的行的id之外。这不是我想要的。在一个文件中,我希望生成多个ID。您的解决方案基于我的第一个示例:
$id=sha1(\uuuuu FILE\uuuuuu.\uuuuuuuu行\uuuu)这对我来说还不够舒适。我更喜欢一个没有任何参数的函数,比如
generate\u id
。你现在的方式应该很好。另一种选择是
generate\u id(\uuuuu FILE\uuuuuuuuuu,\uuuuuuuuuu行\uuuuuuuuuuuu)
?对我来说,它返回解析错误。好吧,你必须在一个带有
的赋值中使用它并更改您的函数以接受参数等。。。