3

我有一个Bcrypt.class包含我的散列方法,我有一个userDAO.class包含我的注册方法。

在我Bcrypt.class的方法是私有的。我怎样才能访问它们,userDAO.class以便我可以散列我的密码?

如果您需要查看任何代码,请告诉我。

4

3 回答 3

1

Bcrypt类中创建您的方法publicprotected

这些是你应该记住的事情。

  • Public Methods: 可以从任何地方访问
  • Protected Methods: 可以被继承它的类和其他类访问。
  • Private Methods: 只有相应的才能访问。
于 2013-09-14T09:26:52.543 回答
1

从 PHP 5.4 和ReflectionMethod::getClosure()开始,似乎可以从外部访问私有方法。老实说 - 在相信它确实有效之前,必须尝试以下解决方案。

来自Denis Doronin 的用户贡献注释部分的代码

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.
于 2014-01-23T19:05:41.173 回答
1

您不能private从声明它们的类外部访问方法。如果 API 开发者决定使用private,那么就没有机会了。我个人几乎在所有情况下都喜欢protected。一些 API 开发人员不...

如果您对类的源代码具有个人访问权限,Bcrypt并且可以在不破坏任何内容的情况下对其进行更改,则可以创建方法protected并扩展该类或使它们均匀public

另一种设计方法是将算法放在单独的类中,并在Bcrypt类和其他类中使用它们

于 2013-09-14T09:11:52.333 回答