使用Zend_Amf为我的Flex应用程序提供的另一项服务

时间:2010-02-04 14:58:43

标签: flex model-view-controller zend-framework iterator zend-amf

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

2 个答案:

答案 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;
}