2010-02-15 4 views
0
여기

는 일부 PHP 코드 : 객체 메소드 어떻게 코드를 다른 언어로 작동합니다 다음을 수행 정적 메소드 상황에서 vissible입니다 않는 이유비정상적인 OO 동작?

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

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

누군가가 나를 설명 할 수 ???

+0

여기에 귀하의 문제가 무엇인지 모르겠습니다. 이 코드가 오류를 줄 수 있습니까? 당신은 이상한 구조를 만들었지 만 구문 적으로 정확하다고 생각합니다. –

답변

4

키워드 private이 기능은, 아니이 객체 내에서이 클래스 내에서 액세스 할 수 있음을 의미합니다. 내가 아는 모든 언어에서 동작이 동일합니다.

0

$ a 객체가 A :: callAction()에서 매개 변수로 전달되므로 static 또는 not 메소드 중 하나를 호출 할 수 있습니다.

A :: callAction (A)에서와 같이 A 클래스를 구현하면 $ a-> action을 호출 할 수 있습니다.

Simple? =)