Bcrypt.class
ハッシュメソッドを含むuserDAO.class
があり、登録メソッドを含む があります。
私Bcrypt.class
のメソッドは非公開です。userDAO.class
パスワードをハッシュできるように、どのようにアクセスできますか?
コードを見る必要がある場合はお知らせください。
Bcrypt.class
ハッシュメソッドを含むuserDAO.class
があり、登録メソッドを含む があります。
私Bcrypt.class
のメソッドは非公開です。userDAO.class
パスワードをハッシュできるように、どのようにアクセスできますか?
コードを見る必要がある場合はお知らせください。
Bcrypt
クラスのメソッドを または のいずれpublic
かにしprotected
ます。
これらは、心に留めておくべきことです。
Public Methods
:どこからでもアクセス可能Protected Methods
: クラスおよびそれを継承する他のクラスからアクセスできます。Private Methods
: 対応するものだけがアクセスできます。private
メソッドを宣言しているクラスの外部からメソッドにアクセスすることはできません。API 開発者が使用することにした場合private
、チャンスはありません。protected
私は個人的に、ほぼすべての状況で好みます。一部の API 開発者は..
クラスのソースコードに個人的にアクセスでき、Bcrypt
何も壊さずに変更できる場合は、メソッドをprotected
作成してクラスを拡張するか、それらを均等にするpublic
もう 1 つの設計アプローチは、アルゴリズムを別のクラスに配置し、それらをBcrypt
クラスやその他のクラスで使用することです。
PHP 5.4 とReflectionMethod::getClosure()の時点で、外部からプライベート メソッドにアクセスできるようです。正直なところ、実際に機能すると信じる前に、次のソリューションを試してみる必要がありました。
Denis Doronin による User Contributed Notes セクションからのコード。
function call_private_method($object, $method, $args = array())
{
$reflection = new ReflectionClass(get_class($object));
$closure = $reflection->getMethod($method)->getClosure($object);
return call_user_func_array($closure, $args);
}
class Example
{
private $x = 1;
private $y = 10;
private function sum()
{
print $this->x + $this->y;
}
}
call_private_method(new Example(), 'sum');
// Output is 11.