Php 基于文件和行输入(或类似内容)生成ID
在我的程序中,我需要一种创建唯一标识符的方法(比如散列)。重要的是ID不是随机的,而是同一函数或方法调用之间的相同ID。因此,如果在某个文件的某一行中生成了标识符Php 基于文件和行输入(或类似内容)生成ID,php,identifier,Php,Identifier,在我的程序中,我需要一种创建唯一标识符的方法(比如散列)。重要的是ID不是随机的,而是同一函数或方法调用之间的相同ID。因此,如果在某个文件的某一行中生成了标识符xyz,则应始终在此位置生成相同的标识符 我可以使用这样的指令代码: $id = sha1(__FILE__ . __ LINE__); 但这还不够舒适。我更喜欢在C/C++中使用一些函数或宏(我知道PHP没有宏),如下所示: $id = generate_id(); generate_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)
?对我来说,它返回解析错误。好吧,你必须在一个带有的赋值中使用它代码>并更改您的函数以接受参数等。。。