0

我正在使用http://www.openwall.com/phpass/进行散列。我希望为其添加命名空间,并添加如下所示的单行。

<?php
namespace myNameSpace;  //I added this one line
class PasswordHash {
  //...
}
?>

然后我创建我的对象,但是,当我应用 HashPassword 方法时,结果完全不同。

require 'PasswordHash.php';
//$t_hasher = new PasswordHash(8, FALSE); //Original line
$t_hasher = new myNameSpace\PasswordHash(8, FALSE);

$correct = 'test12345';
$hash = $t_hasher->HashPassword($correct);

唯一的变化是我将命名空间添加到类的两行以及我启动对象的位置。

什么可能导致差异以及如何识别和修复它们?

4

1 回答 1

0

根据文档http://us2.php.net/__destruct

从 PHP 5.3.3 开始,与命名空间类名的最后一个元素同名的方法将不再被视为构造函数。此更改不会影响非命名空间类。

phpass 使用与命名空间类的最后一个元素同名的构造函数。将名称更改为__construct.

于 2014-02-23T13:53:36.267 回答