<?php
$sth = Framework::blah()->any_key['any_key_2'];
?>
こんにちは、blah() で「any_key」と「any_key_2」を取得したいのですが、どうすればよいですか?
あなたがしていること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){}
}
それは不可能であるかblah
、何らかの方法でこれらをパラメーターとして渡す必要があります。
メソッドチェーンまたは流暢なインターフェイスを実装するときに使用される重要な概念は、すべてのメソッドでオブジェクト自体を返すことです。