Php 从类外部访问私有方法
我有一个包含散列方法的Php 从类外部访问私有方法,php,visibility,Php,Visibility,我有一个包含散列方法的Bcrypt.class,还有一个包含register方法的userDAO.class 在myBcrypt.class中,方法是私有的。如何在我的userDAO.class中访问它们,以便散列我的密码 如果您需要查看任何代码,请告诉我。您不能从声明它们的类之外访问私有方法。如果API开发者决定使用private,那么就没有机会了。我个人喜欢在几乎所有情况下都受到保护。一些API开发人员不这样做 如果您拥有对Bcrypt类的源代码的个人访问权限,并且可以在不破坏任何内容的情况
Bcrypt.class
,还有一个包含register方法的userDAO.class
在myBcrypt.class
中,方法是私有的。如何在我的userDAO.class
中访问它们,以便散列我的密码
如果您需要查看任何代码,请告诉我。您不能从声明它们的类之外访问
私有方法。如果API开发者决定使用private
,那么就没有机会了。我个人喜欢在几乎所有情况下都受到保护。一些API开发人员不这样做
如果您拥有对Bcrypt
类的源代码的个人访问权限,并且可以在不破坏任何内容的情况下对其进行更改,则将方法设置为protected
并扩展该类,甚至将其设置为public
另一种设计方法是将算法放在一个单独的类中,并在
Bcrypt
类中使用它们,而其他方法则将您的方法放在Bcrypt
类中,要么公共
要么受保护
这些是你应该记住的事情
:可以从任何地方访问公共方法
:可由类和继承它的其他类访问受保护的方法
:只有相应的方法才能访问私有方法
如果你想从另一个类中使用它们,请将它们公开。公开它们或使它们静态,这样你就可以称之为……那么,与我现有的答案相比,你的答案有什么好处呢?我在回答我的答案时甚至没有看你的答案。通常情况下,答案是:阅读问题,看答案。如果问题已经有了答案,并且您通过->upvote确认,则转到下一个问题。没有什么可抱怨的,您的答案在顶部。所以冷静点。@DipeshParmar未删除。:)
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.