调用方法后返回对象项的快捷方法?

时间:2012-11-30 15:52:33

标签: php object

我正在使用PHP 5.4。我的类中的大多数数据库查询都将结果作为对象返回。我有一些查询,我正在转换为返回对象而不是数组。我正在转换的其中一个查询在我的应用程序中使用了很多。通常我只需要一次访问一个项目,并且我使用简写方法来访问该数组项目。

echo $this->analysis->get_meta_data()['member_id'];

有没有办法使用同样的方法只从带有对象的数组中获取单个结果?我试过了:

echo $this->analysis->get_meta_data()->member_id;

......认为它会起作用,但我得到的只是一个错误。我只是不知道是否可以从数组中以类似的方式从对象返回单个项目。谢谢!

的var_dump:

object(stdClass)#23 (72) {
  ["id"]=>
  string(3) "31734"
  ["member_id"]=>
  string(1) "2233"
  ["entity_name"]=>
  string(15) "Tester, Test"
  ["create_date"]=>
  string(10) "11/13/2012"
  ["create_user_id"]=>
  string(1) "1"
  ["status_id"]=>
  string(1) "1"
  ...
}

2 个答案:

答案 0 :(得分:3)

您可以从ArrayObject功能返回stdClass而不是get_meta_data(),并充分利用这两个世界

function get_meta_data()
{
     // your existing code building an array

     // ..

     // hand array to ArrayObject, telling it to also allow array keys to be accessed as properties

     return new ArrayObject($array, ArrayObject::ARRAY_AS_PROPS);

}
//Either method should now work

echo $this->analysis->get_meta_data()['member_id']; 
echo $this->analysis->get_meta_data()->member_id;   

答案 1 :(得分:0)

您可以创建一个迭代数组的方法。并且对于每次迭代,您移动索引。

你也可以这样做:

    get_meta_data() {

         $obj->member_id = $var["member_id"];
         return $obj;

    }
}
class Obj {

    var $member_id;

}

我假设你已经在班级的某个地方有$obj$var