0

私は以下のようなクラスを持っています:

$structure = new stdClass();

$structure->template->view_data->method       = 'get_sth';
$structure->template->view_data->lang         = $lang;
$structure->template->view_data->id_page      = $id_page;
$structure->template->view_data->media_type   = 'ibs';
$structure->template->view_data->limit        = '0';
$structure->template->view_data->result_type  = 'result';

そして、私はそれが以下のように書くことができるかどうかについて興味がありますか?

$structure->template->view_data->method       = 'get_sth_else',
                               ->lang         = $lang,
                               ->id_page      = $id_page,
                               ->media_type   = 'ibs',
                               ->limit        = '0',
                               ->result_type  = 'result',

                    ->another-data->method    = 'sth_else',
                                  ->type      = 'sth',
                                  ->different = 'sth sth';
4

2 に答える 2

1

いいえ、オブジェクトと値を毎回渡す必要があります。

$structure->template->view_data->method       = 'get_sth_else';
$structure->template->view_data->lang         = $lang;
$structure->template->view_data->id_page      = $id_page;
$structure->template->view_data->media_type   = 'ibs';
$structure->template->view_data->limit        = '0';
$structure->template->view_data->result_type  = 'result';

$structure->template->another_data->method    = 'sth_else';
$structure->template->another_data->type      = 'sth';
$structure->template->another_data->different = 'sth sth';
于 2012-10-08T09:11:04.077 に答える
0

あなたが話しているのは「FluentInterface 」と呼ばれ、コードを読みやすくすることができます。

「箱から出して」使用することはできません。使用するにはクラスを設定する必要があります。基本的に、流暢なインターフェースで使用するメソッドは、それ自体のインスタンスを返す必要があります。だからあなたは次のようなことをすることができます:-

class structure
{
    private $attribute;
    private $anotherAttribute;

    public function setAttribute($attribute)
    {
        $this->attribute = $attribute;
        return $this;
    }

    public function setAnotherAttribute($anotherAttribute)
    {
        $this->anotherAttribute = $anotherAttribute;
        return $this;
    }

    public function getAttribute()
    {
        return $this->attribute;
    }

    //More methods .....
}

そしてそれをこのように呼びます:-

$structure = new structure();
$structure->setAttribute('one')->setAnotherAttribute('two');

明らかに、これはゲッターには機能しません。ゲッターは探している値を返さなければならないからです。

于 2012-10-08T09:32:40.743 に答える