2010-07-31 89 views

回答

0

這是不可能的,或者您需要以某種方式將這些作爲參數傳遞給blah

method chaining或實施fluent interface中使用的關鍵概念是在每個方法中返回對象本身。

5

你所用Framework::blah()->any_key['any_key_2'];做的是這樣的:

靜態調用方法blah()Framework類。該方法調用必須返回一個對象,從中您可以以某種方式獲得屬性any_keyany_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){} 
}