访问对象的属性,如对象是数组

时间:2011-11-23 07:03:31

标签: php zend-framework

当您不知道他们的姓名将如何被写入时,是否可以访问对象的属性?

我的问题是当查询返回Zend_Db_Table_Rowset_Abstract对象时,有些字段的名称如“name_fr”,“name_en”,“name_au”。我想根据应用程序中使用的当前语言访问它们中的任何一个。为此,我用这种方式编写代码:

$result = $myModel->fetchAll($query)->current();
$row = $result->toArray();
echo 'Your name is '.$row['name_'.$language];

这很烦人。是否可以编写这样的代码,例如:

$result = $myModel->fetchAll($query)->current();
echo 'Your name is '.$result->name_{$language};

3 个答案:

答案 0 :(得分:2)

这应该有效:

$result = $myModel->fetchAll($query)->current();
echo 'Your name is '.$result->{'name_'.$language};

答案 1 :(得分:1)

当您使用Zend_Db_TablefetchAll()->current()时,返回对象的类型为Zend_Db_Table_Row,其继承自Zend_Db_Table_Row_AbstractZend_Db_Table_Row_Abstract实现ArrayAccessmanual)接口,这意味着您可以使用数组键表示法引用对象属性。

所以,语法:

'Your name is '.$row['name_'.$language];

应该在不使用toArray()的情况下工作;

答案 2 :(得分:0)

试试这个:

$result->{"name_$language"}