0

我有一个迭代器服务,它已经可以正常工作,并通过我的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; 
4

2 回答 2

1

您将需要研究 ValueObjects。Zend_Amf 支持这些,使用它是个好主意。这样,您就可以拥有 PHP 和 Flex 原生的对象。

$server->setClassMap('ContactVO', 'Contact');

然后你的 Flex 会有一个类:

[Bindable]
[RemoteClass(alias="Contact")]
public class ContactVO
{
}

将告诉您的服务器您将在 Flex 中将 Contact 类映射到 ContactVO。

那么你可以这样做:

$data = array();
foreach ($result as $row)
{
    $data[] = new Contact($row); 
    //assuming the Contact constructor parses the array data
}
return $data;

并且您的 Contact 对象将作为 ContactVO 对象到达 Flex

于 2010-02-04T16:17:00.687 回答
0

所以这里我在数据库表的逻辑模型中有一个函数:

公共函数 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;
}
于 2010-02-04T16:26:23.463 回答