如何从另一个对象获取对象值[关闭]

It's been a while since I last work with object. I can't figure out what I did wrong. I have a class that contain another class as a property. After instantiating ItemDetail() inside Item(), I can't get the value of description. var_dump($item) give me NULL for the value of $detail. Please help. Thank you.

<?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);
?>

You need to change the scope of your class properties, or define a method that returns the values. Example:

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();

If you make your properties public, you can get them like this as well:

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;

It's all about visibility