0
<?php
$sth = Framework::blah()->any_key['any_key_2'];
?>

こんにちは、blah() で「any_key」と「any_key_2」を取得したいのですが、どうすればよいですか?

4

2 に答える 2

5

あなたがしていることFramework::blah()->any_key['any_key_2'];はこれです:

クラスblah()内のメソッドを静的に呼び出します。メソッド呼び出しは、何らかのFramework方法でプロパティを取得できるオブジェクトを返す必要があります。any_keyの値は、any_keyを実装する配列または何かである必要がありますArrayAccess

class Framework
{
    public static function blah()
    {
        return new ArrayObject(
            array('any_key' => array(
                'any_key_2' => 'blablablah')
            ), ArrayObject::ARRAY_AS_PROPS);
    }
}

また

class Framework {

    public $any_key = array(
        'any_key_2' => 'blahblahblah'
    );

    public static function blah()
    {
        return new self;
    }
}

また

class Framework
{
    public static function blah()
    {
        $class = new StdClass;
        $class->any_key = new Foo;
        return $class;
    }
}

class Foo implements ArrayAccess
{
    protected $any_key_2 = 'blahblahblah';
    public function offsetGet ($offset){
        return $this->$offset;
    }
    public function offsetSet ($offset, $value){}
    public function offsetUnset ($offset){}
    public function offsetExists ($offset){}
}
于 2010-07-31T14:00:24.377 に答える
0

それは不可能であるかblah、何らかの方法でこれらをパラメーターとして渡す必要があります。

メソッドチェーンまたは流暢なインターフェイスを実装するときに使用される重要な概念は、すべてのメソッドでオブジェクト自体を返すことです。

于 2010-07-31T14:00:23.997 に答える