<?php
$sth = Framework::blah()->any_key['any_key_2'];
?>
你好,我想在blah()中得到'any_key'和'any_key_2',我該怎麼做?鏈接方法PHP
<?php
$sth = Framework::blah()->any_key['any_key_2'];
?>
你好,我想在blah()中得到'any_key'和'any_key_2',我該怎麼做?鏈接方法PHP
這是不可能的,或者您需要以某種方式將這些作爲參數傳遞給blah
。
在method chaining或實施fluent interface中使用的關鍵概念是在每個方法中返回對象本身。
你所用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){}
}