å¶å°”写写php感觉心情˜q˜æ˜¯è›®èˆ’ç•…çš„åQˆJava里的Struts+Hibernate+Spring写久了)åQŒå†™å†™phpæ‰çŸ¥é“,˜q™ç§è¢«è§£æ”„¡š„感觉真好。ä¸å¾—ä¸è¯ß_¼Œphp是一¿UæœåŠ¡å™¨ç«¯æ¯”è¾ƒç²¾è¾Ÿçš„è¯è¨€åQŒé𾿀ªå´‡æ‹œè€…è¿™ä¹ˆå¤šã€‚å°±æ¥æ•´æ•´flexåŸÞZºŽphp的交互,看好了,˜q™é‡Œè¦ä»‹¾lçš„ä¸æ˜¯é€šè¿‡flex里é¢çš„HttpService¾l„äšg与php交互åQŒè€Œæ˜¯å€ŸåŠ©AMFPHP通过RemoteObjectæ–¹å¼æ¥äº¤äº’ã€?br />关于amfphp环境的æå»ºï¼Œè¯·å‚考本人写的amfphp环境æå¾æ•™ç¨‹åQŒå½“焉™‡Œé¢å†™çš„æ¯”è¾ƒç²—ç•¥ï¼Œæœ‰ä¸æ¸…ç²—çš„å¯ä»¥è”¾pÀLˆ‘ã€?br />å…ˆæ¥çœ‹çœ‹php端代ç ?br />ProductServices.php
<?php
class ProductServices{
/**
*query product list
*/
function getProductList(){
$link=@mysql_connect("localhost", "root", "") or die("Could not connect");
mysql_select_db("compass",$link);
mysql_query("set names utf8",$link);
$result = mysql_query("SELECT * FROM product",$link);
$array=array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
array_push($array,$row);
}
mysql_free_result($result);
mysql_close($link);
return $array;
}
function findProductById($id){
$link=@mysql_connect("localhost", "root", "") or die("Could not connect");
mysql_select_db("compass",$link);
mysql_query("set names utf8",$link);
$result = mysql_query("SELECT * FROM product where id= ".$id,$link);
$array=array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
array_push($array,$row);
}
mysql_free_result($result);
mysql_close($link);
return $array;
}
}
?>
在ProductServices.phpæ–‡äšgä¸ï¼Œå®šä¹‰äº†ä¸€ä¸ªç±»ProductServicesåQŒé‡Œé¢å°è£…了两个æ–ÒŽ³•åQŒgetProductListåQˆï¼‰åQŒfindProductByIdåQ?idåQ‰é‡Œé¢å†…容很½Ž€å•,一个是全部查询商å“åQŒä¸€ä¸ªæ˜¯æ ÒŽ®Id查询商å“
注æ„è¯¥æ–‡ä»¶å˜æ”„¡š„ä½ç½®C:\inetpub\wwwroot\amfphp\services\ ˜q™æ ·å¯ä»¥è¢«amfphp的资æºç®¡ç†å™¨‹‚€ç´¢åˆ°
¾~–写flex端代ç ?
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
creationComplete="ro.getOperation('getProductList').send()"
>
<!--
ro.getOperation('getProductList').send()
ro为RemoteObject的Id
ro.getOperation('getProductList')获å–phpæ–‡äšgä¸çš„æ–ÒŽ³•å,åŠè¦è°ƒç”¨æœåŠ¡å™¨ç«¯çš„é‚£ä¸ªæ–¹æ³?br /> send()å‘é€è¯·æ±‚,在sendä¸å¯ä¼ 递傿•ŽÍ¼Œå¤šä¸ªå‚数之间用逗å·åˆ†éš”åQŒå‚æ•°åè¦ä¸ŽæœåŠ¡å™¨ç«¯çš„å‚æ•°å一è‡?br /> -->
<fx:Declarations>
<!-- ž®†éžå¯è§†å…ƒç´ åQˆä¾‹å¦‚æœåŠ¡ã€å€¼å¯¹è±¡ï¼‰æ”‘Öœ¨æ¤å¤„ -->
<s:RemoteObject id="ro"
destination="amfphp"
source="ProductServices"
fault="getProductList_faultHandler(event)"
result="getProductList_resultHandler(event)"
endpoint="http://192.168.3.11/amfphp/gateway.php">
</s:RemoteObject>
<!--
RemoteObjectä¸çš„destination需è¦ä¸Žsrc目录下的services-config.xmlä¸å®šä¹‰çš„destinationçš„Idä¿æŒä¸€è‡?br /> source="ProductServices"è¦è°ƒç”¨æœåŠ¡å™¨ç«¯çš„é‚£ä¸ªphp¾c»ï¼Œå¦‚æžœå˜åœ¨åŒ…çš„è¯æ³¨æ„包å?¾cÕd
fault å¤ÞpÓ|æ—¶å“应的æ–ÒŽ³•
result æˆåŠŸæ—¶çš„æ–ÒŽ³•
endpoint="http://192.168.3.11/amfphp/gateway.php" æ£ç¡®è®‰K—®gateway.php的地å€
-->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.utils.ArrayUtil;
[Bindable]
internal var dp:ArrayCollection;
//amfphpè¯äh±‚æˆåŠŸæ—¶è°ƒç”¨æ–¹æ³?/span>
protected function getProductList_resultHandler(event:ResultEvent):void
{
dp=new ArrayCollection(ArrayUtil.toArray(event.result));
}
//amfphpè¯äh±‚å¤ÞpÓ|时调用方æ³?/span>
protected function getProductList_faultHandler(event:FaultEvent):void
{
Alert.show("å¤ÞpÓ|äº?/span>",event.fault.message);
}
]]>
</fx:Script>
<s:layout>
<s:HorizontalLayout/>
</s:layout>
<s:DataGrid width="519" height="292" dataProvider="{dp}" requestedRowCount="4">
<s:columns>
<s:ArrayList>
<s:GridColumn dataField="id" headerText="¾~–å·"></s:GridColumn>
<s:GridColumn dataField="name" headerText="商å“åç§°"></s:GridColumn>
<s:GridColumn dataField="price" headerText="å•äh"></s:GridColumn>
<s:GridColumn dataField="descption" headerText="æè¿°"></s:GridColumn>
</s:ArrayList>
</s:columns>
</s:DataGrid>
</s:Application>
必须在flex工程的srcç›®å½•ä¸‹å˜æ”¾ä¸€ä¸ªå为services-config.xml
<? version="1.0" encoding="UTF-8"?>
<services-config>
<services>
<service id="sabreamf-flashremoting-service"
class="flex.messaging.services.RemotingService"
messageTypes="flex.messaging.messages.RemotingMessage">
<destination id="amfphp">
<channels>
<channel ref="my-amfphp"/>
</channels>
<properties>
<source>*</source>
</properties>
</destination>
</service>
</services>
<channels>
<channel-definition id="my-amfphp" class="mx.messaging.channels.AMFChannel">
<endpoint uri="http://192.168.3.11/amfphp/gateway.php" class="flex.messaging.endpoints.AMFEndpoint"/>
</channel-definition>
</channels>
</services-config>
需è¦å°†è¯¥æ–‡ä»¶ç¼–译到环境ä¸åŽ»

效果�br />
ç‚ÒŽˆ‘下è²ä»£ç 
]]>