2013-07-03 6 views
0

객체를 사용하여 마지막으로 작업 한 지 오래되었습니다. 나는 내가 잘못한 것을 알아낼 수 없다. 다른 클래스를 속성으로 포함하는 클래스가 있습니다. Item()에서 ItemDetail()을 인스턴스화 한 후 설명 값을 가져올 수 없습니다. var_dump ($ item) $ detail의 값에 대해 NULL을 준다. 도와주세요. 고맙습니다.다른 객체에서 객체 값을 가져 오는 방법

<?php 
class Item 
{ 
    private $name; 
    private $detail; 

    function __construct() { 
    $this->name = 'some name'; 
    $this->detail = new ItemDetail(); 
    } 

    function getDetail() { 
    return $this->detail; 
    } 
} 

class ItemDetail 
{ 
    private $description; 

    function __construct() { 
    $this->description = 'some description'; 
    } 

    function getDescription { 
    return $this->description; 
    } 
} 

$item = new Item(); 
echo $item->getDetail()->getDescription(); 
//var_dump($item); 
?> 
+0

에 관하여, 어떤 방법도없이? – samayo

답변

2

클래스 속성의 범위를 변경하거나 값을 반환하는 메서드를 정의해야합니다. 예 :

class Item 
{ 
    private $name; 
    private $detail; 

    function __construct() { 
    $this->name = 'some name'; 
    $this->detail = new ItemDetail(); 
    } 

    public function getDescription() { 
     return $this->detail->getDescription(); 
    } 
} 

class ItemDetail 
{ 
    private $description; 

    function __construct() { 
    $this->description = 'some description'; 
    } 

    public function getDescription() { 
     return $this->description; 
    } 
} 

$item = new Item(); 
echo $item->getDescription(); 

당신이 당신의 재산을 공개하는 경우, 당신은뿐만 아니라 이런 식으로 그들을 얻을 수 있습니다

class Item 
{ 
    public $name; 
    public $detail; 

    public function __construct() { 
    $this->name = 'some name'; 
    $this->detail = new ItemDetail(); 
    } 
} 

class ItemDetail 
{ 
    public $description; 

    public function __construct() { 
    $this->description = 'some description'; 
    } 
} 

$item = new Item(); 
echo $item->detail->description; 

그것은 객체에서, 모든 당신이 얻을하려는 어떤 가시성

+0

내 코드에는 실제로 첫 번째 예제와 마찬가지로 접근 자 메서드가 있습니다. Item 클래스에는 $ this-> detail을 반환하는 getDetail() 메서드가 있습니다. 그래서 주에는 $ item-> getDetail() -> getDescription()이 있습니다. 이 오류가 발생합니다. 객체가 아닌 객체의 getDescription() 멤버 함수를 호출하면 ... – Eric

+0

당신이하고있는 것을보기 위해 전체 코드를 볼 필요가 있습니다. 호출 된 메소드에서'$ this '를 반환하지 않는 한 메소드를 연결할 수는 없지만 이렇게하면 잘못된 결과가 생성됩니다. –

+0

그것은 기본적으로 내가 지금까지 가지고있는 것이다. 방금 클래스를 짧게 만드는 접근 자 메서드를 포함하지 않았습니다. 내 코드는 확실히 Java에서 작동합니다. PHP로 어떻게 처리해야하는지 궁금합니다. 클래스 속성을 private로 설정하여 외부에서 액세스 할 수 없도록합니다. 그런 다음 해당 속성에 액세스하기 위해 접근 자 메서드를 만듭니다. main()에서 $ description의 값을 어떻게 표시 할 수 있습니까? – Eric

관련 문제