我有一个工作正常的迭代器服务,并通过我的 Zend Amf 服务器将正确结构化的值返回到我的flex应用程序
$contacts = array();
mysql_connect( 'localhost', 'root', 'test' );
mysql_select_db( 'test' );
$res = mysql_query( 'SELECT * FROM contact' );
while( $contact = mysql_fetch_assoc($res) ) {
$contacts []= $contact;
}
return $contacts;
但是我想调整它以便我可以利用我的MVC结构并获得相同的结果。 我已经放了一段可以带到工作状态的摘录
$contacts = array();
$table = new Model_DbTable_Contact();
$result = $table->fetchAll();
//Return an array to be consumed by my flex application
foreach ($result as $row)
{
/*do something*/
}
return $contacts;
答案 0 :(得分:1)
您需要查看ValueObjects。 Zend_Amf支持那些,使用它是个好主意。这样你就可以拥有PHP和Flex原生的对象。
$server->setClassMap('ContactVO', 'Contact');
您的Flex将有一个类:
[Bindable]
[RemoteClass(alias="Contact")]
public class ContactVO
{
}
告诉您的服务器您要将您的Contact类映射到Flex中的ContactVO。
然后你可以这样做:
$data = array();
foreach ($result as $row)
{
$data[] = new Contact($row);
//assuming the Contact constructor parses the array data
}
return $data;
并且您的Contact对象将作为ContactVO对象获取Flex
答案 1 :(得分:0)
所以这里我在数据库表的逻辑模型中有一个函数:
public function fetchAll(){
$resultSet = $this->getDbTable()->fetchAll();
$entries = array();
foreach( $resultSet as $row ) {
$entry = new Model_ClosingData();
$entry->setId($row->id)
->setContractMonth($row->monthId)
->setCommodity($row->commodityId)
->setDate($row->date)
->setPrice($row->price)
->setVolume($row->volume)
->setOutstandingInterest($row->outstandingInterest);
$entries[] = $entry;
}
return $entries;
}