Filemaker AMF Gateway
@author francesc sans [email protected] @version 1.0
版權(C)2012 Network BCN軟件
該程序是免費的軟件:您可以根據自由軟件基金會發布的GNU通用公共許可證的條款對其進行重新分配和/或修改它,該版本是該許可證的版本3,或(按您的選項)任何以後的版本。
該程序的分佈是希望它將有用的,但沒有任何保修;即使沒有對特定目的的適銷性或適合性的隱含保證。有關更多詳細信息,請參見GNU通用公共許可證。
您應該已經收到了GNU通用公共許可證的副本以及此計劃。如果沒有,請參見http://www.gnu.org/licenses/。
對於每個表,您應該創建遠程服務擴展Filemakerdao.php類:
<?php
include_once ( DAO_LIB . " filemaker/FilemakerDao.php " );
class FmerrDao extends FilemakerDao {
public $ context = " xml_fmerr " ;
public $ valueObject = " FmerrVO " ;
}
?>$上下文是指將查詢目標的Filemaker佈局名稱。請記住,只有在此佈局中放置的字段才能是交易的一部分。前綴所有Web接口特定的佈局將是一個好主意(我們使用“ XML”。當自動生成代碼時,您會發現此非常有用(也可以進行文檔)
$ valueObject是用於參考表術的DTO的類的名稱。將VOS放置在“ VO”文件夾中,FileMakerDao類在運行時使用類工廠實例化鍵入對象,並默認情況下在此文件夾中搜索值對像類定義。
然後創建DTO(值對象):
<?php
class FmerrVO {
public function __construct () { }
public $ recid ;
public $ sku ;
public $ status ;
public $ type ;
public $ errnum ;
public $ description ;
public $ group ;
public $ coment ;
public $ iid ;
public $ _explicitType = " es.ntwk.samples.fmclub.vo.FmerrVO " ;
public function __set_state ( $ assoc ) {
$ this -> recid = ( int ) $ assoc -> recid ;
$ this -> sku = ( string ) $ assoc -> sku ;
$ this -> status = ( string ) $ assoc -> status ;
$ this -> type = ( string ) $ assoc -> type ;
$ this -> errnum = ( string ) $ assoc -> errnum ;
$ this -> description = ( string ) $ assoc -> description ;
$ this -> group = ( string ) $ assoc -> group ;
$ this -> coment = ( string ) $ assoc -> coment ;
$ this -> iid = ( string ) $ assoc -> iid ;
}
}
?>注意在$ valueObject填充上完成的類型轉換。
您可以在此處調整應用程序和Filemaker之間的數據類型。例如,對於filemaker編號字段,使用此操作來修復最終(enoying)點/結腸分離器:
$ this -> ammount = ( float ) str_replace ( " , " , " . " , $ assoc -> ammount );對於日期播放串(我稍後再說)
自己創建軟件包,建議您使用標準(在此示例“ es.ntwk.samples.fmclub”中)
- > filemakerdao文件夾
- >服務
- > lib(filemakerdao庫)
- > es
- > ntwk
- >樣品
- > fmclub
- > fmerrdao(您的班級)
- > vo
- > fmerrvo(您的價值對象)
(瀏覽源代碼以查看示例)
現在,您可以撥打服務,例如find(),findcompound(),createOne(),updateOne(),deleteone()...
在每個呼叫中使用以下參數:
$ param :一個填充了要設置或更新相關的值的VO對象,將null VO用於“ Findall”或Especify recid (RecordID)進行編輯記錄。
$ filter :帶有從值對象使用的字段名稱的數組,所有字段的null。
$ skip :帶有跳過和最大值的數組,如果null返回所有發現的記錄。
每個功能的簽名是(如ifileMakerDao.php接口中指定):
public function find ( $ param , $ filter , $ skip );
public function createOne ( $ param , $ filter );
public function updateOne ( $ param , $ filter );
public function deleteOne ( $ param );
public function duplicateOne ( $ param );
public function view ( $ param );
// $param is always a VO or null請注意,您可以在config.ini文件中指定全球忽略的字段,以防萬一您僅在$上下文佈局中讀取字段(例如計算或自動輸入值)