1

我试图从下面的扩展类的链接方法中获得结果,

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. 我该怎么做才能让它正确?

4

3 回答 3

2

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

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

于 2013-09-27T09:17:02.650 回答
1
$page->hasChidren->setId(10);
var_dump(page->hasChidren->getID();
于 2013-09-27T09:17:44.867 回答
1

当你NULL做一个

$page = new Page();

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

于 2013-09-27T09:21:28.540 回答