Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:从扩展类的链接方法中获取结果?_Php_Oop_Method Chaining_Php 5.4 - Fatal编程技术网

PHP:从扩展类的链接方法中获取结果?

PHP:从扩展类的链接方法中获取结果?,php,oop,method-chaining,php-5.4,Php,Oop,Method Chaining,Php 5.4,我试图从下面的扩展类中的链接方法中得到一个结果 class Base { protected $id; public function setId($input) { $this->id = $input; return $this; } } class PageChildren extends Base { public function getID() { return $this->

我试图从下面的扩展类中的链接方法中得到一个结果

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
。我该怎么做才能正确呢?

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


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

您将获取HasChildren的ID,这是一个从未设置ID的PageChildren类型的新对象,您将不会访问设置ID的base类型的原始对象

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

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

您将获得
NULL
因为,当您执行

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

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

您将得到
NULL
,因为,当您执行

$page = new Page();
您的构造函数将首先运行具有
getID()
方法的构造函数。
getID()
方法没有任何要返回的内容,因此您会得到一个
NULL