我想达到这个效果:
class Foo {
public $bar; // array('aaa' => array('bbb' => 'ccc'))
public function __get($value)
{
return $this->bar[...][key($value)]; // don't know what to implement here
}
}
$obj = new Foo();
$obj->aaa['bbb']; // should return 'ccc'
这可能吗?我怎么能这样做?
如果我想以这种方式调用它,如何从__get()方法内部获取Foo :: $ bar数组中的'ccc'值?
答案 0 :(得分:4)
试试这个:
<?php
class Foo {
public $bar = array('aaa' => array('bbb' => 'ccc'));
public function __get($value) {
return $this->bar[$value];
}
}
$obj = new Foo();
echo $obj->aaa['bbb'];
将返回:
ccc
答案 1 :(得分:1)
class Foo {
public $bar = array('aaa' => array('bbb' => 'ccc'));
public function __get($value)
{
return $this->bar[$value];
}
}
$obj = new Foo();
var_dump($obj->aaa['bbb']);
编辑后得到你想要的东西。
答案 2 :(得分:1)
<?php
class Foo
{
// note you had: array('aaa' => array('bbb', 'ccc'));
// so `bbb` and `ccc` were values, not keys.
public $bar = array('aaa' => array('bbb' => 'ccc'));
public function __get($name)
{
return $this->bar[$name];
}
}
$obj = new Foo();
echo $obj->aaa['bbb']; // should return 'ccc'
// output: ccc
答案 3 :(得分:1)
不确定你如何处理这个问题,但我认为这可能是你正在寻找的东西?
<?
class Foo {
function __construct(){
$bar = array(
'aaa' => array('bbb' => 'ccc'),
'zzz' => array('yyy' => 'xxx'),
);
foreach($bar as $key => $value){
$this->{$key} = $value;
}
}
public function __get($value){
// return $this->bar[...][key($value)]; // don't know what to implement here
}
}
$obj = new Foo();
echo $obj->aaa['bbb']; // ccc
echo $obj->zzz['yyy']; // xxx