不寻常的OO行为?

时间:2010-02-15 15:10:41

标签: php oop

这里有一些PHP代码:

class A {
  private function action(){
    echo 1;
  }
  public static function callAction(A $a){
    $a->action();
  }
}

$a = new A;
A::callAction($a);

有人可以解释一下为什么对象方法可以从静态方法上下文中删除下面的代码如何在其他语言中工作?

2 个答案:

答案 0 :(得分:4)

关键字private表示该功能只能在此中访问,而不能在此对象中访问。我所知道的所有语言的行为都是一样的。

答案 1 :(得分:0)

当你的$ a对象作为A :: callAction()中的参数传递时,你可以调用它的任何方法,静态或不静态。

和A :: callAction(A)一样,你在A类的实现中,你可以调用$ a-> action。

简单吗? =)