2011-04-28 2 views
0

클래스 예제의 속성을 자식에게만 액세스 가능하게하고 싶지는 않지만 자식이 초기 __construct . 이것은 내가 지금 상황을 설정하는 방법입니다. 이 방법을 더 잘 할 수 있습니까?php obj properites accessilibty 클래스 외부에서 쓰기 가능하지 않지만 클래스 외부에서 읽을 수 있음

class example{ 
    private $x 
    protected function __construct($x){ 
     setX($x); 
    } 
    private function setX($x){ 
     $this->x = $x; 
    } 
    protected function getX{ 
     return $this->x; 
    } 
} 
+0

잘 모르겠습니다. 하위 클래스에서 속성 값에 액세스하려고하지만 생성자를 제외하고는 설정할 수 없습니까? 그렇다면이 방법이 가장 좋습니다 (생성자가 공개되기를 원하지만). 생성자 메서드를 재정의하면됩니다. – Ross

+0

나는 내 생성자가 서브 클래스를 통해서만 접근 가능하게되기를 바란다.이 경우에 public으로 설정하면 thing에 액세스 할 수있다. –

답변

0

자녀가 $ x를 (읽을 수는 있지만 편집 할 수 없도록하려면) 이해하고 있습니까?

그렇다면 클래스 정의는 괜찮습니다 (구문 오류 임에도 불구하고).

자녀는 개인 회원에 액세스 할 수 없으며 protected (및 public, durhur) 만 액세스 할 수 있습니다.

0

getter/setter를 함수 밖에서 사용하고 싶습니까?

$a = new Example(5); 
$a->setX(25); 

echo $a->getX(); 

는 경우 예, 당신은이 대중 함수를 설정해야합니다

class Example{ 
    private $x 
    protected function __construct($x){ 
     setX($x); 
    } 
    public function setX($x){ 
     $this->x = $x; 
    } 
    public function getX{ 
     return $this->x; 
    } 
} 

추신 : 그것은 당신의 클래스 이름을 활용할 수있는 좋은의 연습입니다.

+0

나는 getter/setters가 서브 클래스 내에서만 사용되기를 원한다. 그래서가는 길에 의해 보호받지 못했을 까? –

관련 문제