<?php
$sth = Framework::blah()->any_key['any_key_2'];
?>
您好,我想在blah()中获取'any_key'和'any_key_2',我是怎么做到的?
答案 0 :(得分: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){}
}
答案 1 :(得分:0)
这是不可能的,或者您需要以某种方式将这些作为参数传递给blah
。
method chaining或实现fluent interface时使用的关键概念是在每个方法中返回对象本身。