PHP,__ get()方法和数组参数

时间:2012-11-29 14:54:33

标签: php

我想达到这个效果:

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'值?

4 个答案:

答案 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