如何从另一个对象获取对象值
从上次使用对象开始工作已经有一段时间了。我无法弄清楚我做错了什么。我有一个包含另一个类作为属性的类。在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);
?>
您需要更改您的类属性的范围,或者定义一个返回值的方法。例如:
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;
这是所有关于知名度
我的代码实际上有访问器方法,就像你的第一个例子。在Item类中,我有一个getDetail()方法返回$ this-> detail。所以在main中,我有$ item-> getDetail() - > getDescription()。我得到这个错误:调用一个非对象的成员函数getDescription()... – Eric
我们需要看完整的代码,看看你在做什么。除非你在被调用的方法中返回'$ this',否则你不能链接这样的方法..但是这样做会产生错误的结果。 –
这基本上是我迄今为止。我只是没有包含访问器方法来缩短这些类。我知道我的代码肯定会在Java中工作。我只是想知道如何在PHP中完成。我将这些类属性设置为私有的,以便它们不能从外部访问。然后我创建访问器方法来访问这些属性。如何显示main()中$ description的值? – Eric
什么是你想要得到的,从对象,没有任何方法? – samayo