FileMaker AMF Gateway
@Author Francesc Sans [email protected] @version 1.0
Copyright (C) 2012 Rede BCN Software
Este programa é um software livre: você pode redistribuí -lo e/ou modificá -lo nos termos da licença pública geral da GNU, conforme publicado pela Free Software Foundation, versão 3 da licença ou (por sua opção) qualquer versão posterior.
Este programa é distribuído na esperança de que seja útil, mas sem garantia; sem a garantia implícita de comercialização ou aptidão para uma finalidade específica. Veja a licença pública geral da GNU para obter mais detalhes.
Você deveria ter recebido uma cópia da licença pública geral da GNU junto com este programa. Caso contrário, consulte http://www.gnu.org/license/.
Para cada tabela, você deve criar o serviço remoto que estete a classe FileMakerdao.php:
<?php
include_once ( DAO_LIB . " filemaker/FilemakerDao.php " );
class FmerrDao extends FilemakerDao {
public $ context = " xml_fmerr " ;
public $ valueObject = " FmerrVO " ;
}
?>O contexto $ refere -se ao nome do layout do FileMaker, onde as consultas serão direcionadas. Lembre -se de que apenas os campos colocados neste layout podem fazer parte da transação. Será uma boa idéia prefixar todos os layouts específicos da interface da web (usamos "xml". Você encontrará isso muito útil ao gerar código automático (para serem documentados também)
O $ ValueObject é o nome da classe empregada como DTO para a Ocurrence da tabela referenciada. Coloque o VOS em uma pasta "VO", a classe FileMakerDao usa uma classe instanciando objetos digitados em tempo de execução e pesquisa as definições de classe de objeto Value nesta pasta por padrão.
Em seguida, crie o DTO (objeto Valor):
<?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 ;
}
}
?>Observe a conversão de tipo que é feita no $ ValueObject .
Você pode ajustar os tipos de dados entre o seu aplicativo e o FileMaker aqui. Por exemplo, para um campo Número do FileMaker, use isso para corrigir os separadores de ponto/cólon Eventual (Enoying):
$ this -> ammount = ( float ) str_replace ( " , " , " . " , $ assoc -> ammount );Para as datas brincar com strings (falarei mais tarde)
Crie o pacote por conta própria, recomendamos que você use padrões (neste exemplo "es.ntwk.samples.fmclub")
-> FileMakerdao Pasta
-> Serviços
-> Lib (a biblioteca FileMakerdao)
-> es
-> ntwk
-> Amostras
-> fmclub
-> FMerrdao (sua classe)
-> vo
-> FMERRVO (seu objeto de valor)
(Navegue pelo código -fonte para ver exemplos)
Agora você pode fazer chamadas para o serviço, como find (), findComPound (), CreateOne (), UpdateOne (), DeleteOne () ...
Use os seguintes parâmetros em cada chamada:
$ param : um objeto VO cheio de valores relevantes que você deseja definir ou atualizar, use um VO nulo para um "findall" ou especialmente recid (registro) para editar registros.
$ filtro : matriz com o nome dos campos para usar no objeto Value, nulo para todos os campos.
$ SKIP : Array com os valores Skip & Max, se Null retornar todos os registros encontrados.
As assinaturas para cada função são (conforme especificado na interface 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 nullObserve que você pode especificar os campos ignorados globalmente no arquivo config.ini, que você deve usar caso tenha apenas campos de leitura no layout de contexto $ (como cálculos ou valores de automóveis)