duanfu3634 2013-07-03 19:34
浏览 8

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

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);
?>
  • 写回答

1条回答 默认 最新

  • douan3414 2013-07-03 19:38
    关注

    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

    评论

报告相同问题?

悬赏问题

  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图