2014-02-07 4 views
1

하위 클래스의 기능 내에서 부모 속성에 액세스해야합니다. 정적 변수는 parent::으로 액세스 할 수 있지만 같은 이름의 변수가 자식 클래스에있을 때 어떻게 정적이 아닌 부모 변수에 액세스 할 수 있습니까?PHP 객체 지향 상속 - 부모 속성 액세스

class My_parent{ 
    $name = "Praeep"; 
} 

class My_child extends My_parent { 
    $name ="Nadeesha"; 

    function show_name() { 
    // need to access $name of the parent just referring the parent variable 
    } 
} 
+0

_ "하지만 자식 클래스가 같은 이름의 변수가있는 경우 '비 정적 부모 변수에 액세스 할 수있는 방법"_ - 어떻게 그 요구 사항은도 의미가 무엇입니까? 자식 클래스가 같은 이름의 (비 정적 인) 변수를 가지고 있다면 그 변수가 _overwritten_이라는 것을 의미합니다 ... – CBroe

답변

-2

상위 클래스에 생성 함수를 추가하고이 함수 내에서 변수를 정의하십시오.

class My_parent{ 
    public $name; 
    public function __construct(){ 
    $this->name= "Praeep"; 
    } 
} 

하위 클래스에도 생성 기능이있는 경우 부모 구성 기능을 수동으로 호출해야합니다. 그러나 클래스는 생성 함수를 가질 필요가 없으므로 간단한 설명을 위해 주석 처리했습니다.

class My_child extends My_parent { 
    // public function __construct(){ 
    // parent::__construct(); 
    // } 
    public function show_name(){ 
    echo $this->name; 
    } 
} 

$c=new My_child(); 
$c->show_name(); 

편집 :

잘 실제로 상위 클래스의 구조 기능이 필요하지 않습니다.

class My_parent{ 
    public $name= "Praeep"; 
} 

class My_child extends My_parent { 

    public function show_name(){ 
    echo $this->name; 
    } 
} 

$c=new My_child(); 
$c->show_name(); 
+0

많은 감사합니다. 언급 한 것과 같은 메서드를 통해 액세스 할 수 있습니다. 하지만 거기에 직접 생성자 또는 클래스를 SELF :: 사용하여 자신의 클래스를 참조 할 수있는 클래스 변수 같은 호출하는 모든 메서드를 사용하지 않고 직접 방법입니다 : 반면 부모 사용하여 부모 :: – pradeep

+0

불가능합니다. 왜냐하면 당신은 그 물건을 돌려줘야하기 때문입니다. –

+0

OK 대단히 감사합니다. – pradeep

0

당신은 protected 수정과 부모 클래스의 변수를 선언하거나 게터를 제공 할 수 있습니다. getter 접근법은 캡슐화를 보장하는 것이 좋습니다.

class My_parent{ 
    private $name = "Praeep"; 
    public function getName() { 
     return $this->name; 
    } 
} 

class My_child extends My_parent { 
    public function show_name() { 
    echo $this->getName(); 
    } 
} 

속성을 변경할 가능성이있는 경우 설정자를 제공하는 것도 고려해보십시오.