0

ハッシュにhttp://www.openwall.com/phpass/を使用しています。それに名前空間を追加したいので、以下に示すように1行追加しました。

<?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);

唯一の変更点は、名前空間をクラスに追加し、オブジェクトを開始した 2 行だけです。

違いの原因は何ですか?また、それらを特定して修正するにはどうすればよいですか?

4

1 に答える 1

0

ドキュメントごとhttp://us2.php.net/__destruct

PHP 5.3.3 以降、名前空間クラス名の最後の要素と同じ名前のメソッドは、コンストラクターとして扱われなくなりました。この変更は、名前空間のないクラスには影響しません。

phpass は、名前空間クラスの最後の要素と同じ名前のコンストラクターを使用します。名前を に変更し__constructます。

于 2014-02-23T13:53:36.267 に答える