我有一个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
: 只有相应的才能访问。从 PHP 5.4 和ReflectionMethod::getClosure()开始,似乎可以从外部访问私有方法。老实说 - 在相信它确实有效之前,必须尝试以下解决方案。
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.
您不能private
从声明它们的类外部访问方法。如果 API 开发者决定使用private
,那么就没有机会了。我个人几乎在所有情况下都喜欢protected
。一些 API 开发人员不...
如果您对类的源代码具有个人访问权限,Bcrypt
并且可以在不破坏任何内容的情况下对其进行更改,则可以创建方法protected
并扩展该类或使它们均匀public
另一种设计方法是将算法放在单独的类中,并在Bcrypt
类和其他类中使用它们