如何从另一个对象获取对象值

问题描述:

从上次使用对象开始工作已经有一段时间了。我无法弄清楚我做错了什么。我有一个包含另一个类作为属性的类。在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

您需要更改您的类属性的范围,或者定义一个返回值的方法。例如:

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类中,我有一个getDetail()方法返回$ this-> detail。所以在main中,我有$ item-> getDetail() - > getDescription()。我得到这个错误:调用一个非对象的成员函数getDescription()... – Eric

+0

我们需要看完整的代码,看看你在做什么。除非你在被调用的方法中返回'$ this',否则你不能链接这样的方法..但是这样做会产生错误的结果。 –

+0

这基本上是我迄今为止。我只是没有包含访问器方法来缩短这些类。我知道我的代码肯定会在Java中工作。我只是想知道如何在PHP中完成。我将这些类属性设置为私有的,以便它们不能从外部访问。然后我创建访问器方法来访问这些属性。如何显示main()中$ description的值? – Eric