当您不知道他们的姓名将如何被写入时,是否可以访问对象的属性?
我的问题是当查询返回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};
答案 0 :(得分:2)
这应该有效:
$result = $myModel->fetchAll($query)->current();
echo 'Your name is '.$result->{'name_'.$language};
答案 1 :(得分:1)
当您使用Zend_Db_Table
和fetchAll()->current()
时,返回对象的类型为Zend_Db_Table_Row
,其继承自Zend_Db_Table_Row_Abstract
。 Zend_Db_Table_Row_Abstract
实现ArrayAccess
(manual)接口,这意味着您可以使用数组键表示法引用对象属性。
所以,语法:
'Your name is '.$row['name_'.$language];
应该在不使用toArray()
的情况下工作;
答案 2 :(得分:0)
试试这个:
$result->{"name_$language"}