【问题标题】:PHP: get a result from a chaining method from extended classes?PHP:从扩展类的链接方法中获取结果?
【发布时间】:2013-09-27 09:10:25
【问题描述】:

我正在尝试从下面的扩展类的链接方法中获取结果,

class Base
{
    protected $id;

    public function setId($input) {

        $this->id = $input;

        return $this;
    }
}

class PageChildren extends Base
{
    public function getID()
    {
        return $this->id;
    }
}


class Page extends Base
{
    public $hasChidren;

    public function __construct()
    {
        $this->hasChidren = new PageChildren();
    }
}

$page = new Page();
var_dump($page->setId(10)->hasChidren->getID());

但我得到的是null 而不是10。我该怎么做才能让它正确?

【问题讨论】:

    标签: php oop method-chaining php-5.4


    【解决方案1】:

    您正在获取 hasChidren 的 ID,这是一个新的 PageChildren 类型的对象,其 ID 从未设置,您没有访问您设置 ID 的原始类型 base 对象

    您创建一个页面对象,当您创建它时,他的属性之一包含一个 PageChildren 对象。然后设置页面对象的 ID。最后,您从 PageChildren 对象而不是 Page 对象获取 ID。

    【讨论】:

      【解决方案2】:
      $page->hasChidren->setId(10);
      var_dump(page->hasChidren->getID();
      

      【讨论】:

        【解决方案3】:

        你得到NULL,因为当你做一个

        $page = new Page();
        

        您的构造函数将首先运行,它具有getID() 方法。 getID() 方法没有返回任何东西,因此你得到一个 NULL

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-06-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-13
          • 2011-11-13
          • 1970-01-01
          相关资源
          最近更新 更多