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 回答