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

ID が設定されていないタイプ PageChildren の新しいオブジェクトである hasChidren の ID を取得しています。ID を設定したタイプ base の元のオブジェクトにアクセスしていません。

ページ オブジェクトを作成すると、その属性の 1 つに PageChildren オブジェクトが含まれます。次に、ページ オブジェクトの ID を設定します。最終的に、Page オブジェクトではなく、PageChildren オブジェクトから ID を取得しています。

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