myfmbutler / myfmapilibrary-for-php
(Claris) FileMaker 19 API PHP 封装器
3.0.2
2020-06-09 12:08 UTC
Requires
- php: >=5.5.0
- ext-curl: *
- ext-mbstring: *
Requires (Dev)
- phpunit/phpunit: ^5.6
README
演示
团队
Lesterius 是一家欧洲 Claris (FileMaker) 商业联盟白金会员,在比利时、法国、荷兰、葡萄牙和西班牙运营。我们是创意商业顾问,与客户共同创建基于 FileMaker 平台解决方案。
分享知识是我们DNA的一部分,这就是我们开发这个库的原因,以便使 FileMaker 数据 API 使用 PHP 变得简单易用。
打破你应用程序的界限!
描述
此库是 (Claris) FileMaker 数据 API 19 的 PHP 封装器。
您可以在发布 <= v.1.* 中找到 FileMaker 数据 API 17 的 PHP 封装器。
您可以在发布 <= v.2.* 中找到 FileMaker 数据 API 18 的 PHP 封装器。
您将能够使用每个函数,就像在您的 FileMaker 服务器数据 API 文档中记录的那样(可通过 https://[您的服务器域名]/fmi/data/apidoc 访问)。有关数据 API 的一般 Claris 文档,请参阅 此处
需求
- PHP >= 5.5
- PHP cURL 扩展
- PHP mb_string 扩展
安装
推荐安装方式是通过 Composer。
composer require myfmbutler/myfmapilibrary-for-php
安装后,您需要包含 Composer 的自动加载器
require_once __DIR__ . '/vendor/autoload.php';
用法
准备您的 Claris (Filmaker) 解决方案
- 在 FileMaker 服务器管理控制台中启用 (Claris) FileMaker 数据 API 选项。
- 在您的 (Claris) FileMaker 数据库中创建一个具有 'fmrest' 权限的特定用户
- 为此用户定义记录和布局访问权限
使用此库
登录
使用凭据登录
$dataApi = new \Lesterius\FileMakerApi\DataApi('https://test.fmconnection.com/fmi/data', 'MyDatabase', null, 'filemaker api user', 'filemaker api password');
使用 oauth 登录
$dataApi = new \Lesterius\FileMakerApi\DataApi('https://test.fmconnection.com/fmi/data', 'MyDatabase', null, null, true, 'oAuthRequestId', 'oAuthIdentifier');
登出
$dataApi->logout();
验证会话
$dataApi->validateSession();
创建记录
$data = [ 'FirstName' => 'John', 'LastName' => 'Doe', 'email' => 'johndoe@acme.inc', 'RepeatingField(1)' => 'Test' ]; $scripts = [ [ 'name' => 'ValidateUser', 'param' => 'johndoe@acme.inc', 'type' => Lesterius\FileMakerApi\DataApi::SCRIPT_PREREQUEST ], [ 'name' => 'SendEmail', 'param' => 'johndoe@acme.inc', 'type' => Lesterius\FileMakerApi\DataApi::SCRIPT_POSTREQUEST ] ]; $portalData = [ 'portalName or OccurenceName' => [ [ "Occurence::PortalField 1" => "Value", "Occurence::PortalField 2" => "Value", ] ] ]; try { $recordId = $dataApi->createRecord('layout name', $data, $scripts, $portalData); } catch(\Exception $e) { // handle exception }
删除记录
try { $dataApi->deleteRecord('layout name', $recordId, $script); } catch(\Exception $e) { // handle exception }
编辑记录
try { $recordId = $dataApi->editRecord('layout name', $recordId, $data, $lastModificationId, $portalData, $scripts); } catch(\Exception $e) { // handle exception }
复制记录
try { $recordId = $dataApi->editRecord('layout name', $recordId, $scripts); } catch(\Exception $e) { // handle exception }
获取记录
$portals = [ [ 'name' => 'Portal1', 'limit' => 10 ], [ 'name' => 'Portal2', 'offset' => 3 ] ]; try { $record = $dataApi->getRecord('layout name', $recordId, $portals, $scripts); } catch(\Exception $e) { // handle exception }
获取记录
$sort = [ [ 'fieldName' => 'FirstName', 'sortOrder' => 'ascend' ], [ 'fieldName' => 'City', 'sortOrder' => 'descend' ] ]; try { $record = $dataApi->getRecords('layout name', $sort, $offset, $limit, $portals, $scripts); } catch(\Exception $e) { // handle exception }
查找记录
$query = [ [ 'fields' => [ ['fieldname' => 'FirstName', 'fieldvalue' => '==Test'], ['fieldname' => 'LastName', 'fieldvalue' => '==Test'], ], 'options' => [ 'omit' => false ] ] ]; try { $results = $dataApi->findRecords('layout name', $query, $sort, $offset, $limit, $portals, $scripts, $responseLayout); } catch(\Exception $e) { // handle exception }
设置全局字段
$data = [ 'FieldName1' => 'value', 'FieldName2' => 'value' ]; try { $dataApi->setGlobalFields('layout name', $data); } catch(\Exception $e) { // handle exception }
执行脚本
try { $dataApi->executeScript('script name', $scriptsParams); } catch(\Exception $e) { // handle exception }
上传文件到容器
重命名文件
$containerFieldName = 'Picture'; $containerFieldRepetition = 1; // replace 'upload' below with the name="value" of the file input element of your web form $filepath = $_FILES['upload']['tmp_name']; $filename = $_FILES['upload']['name']; try { $dataApi->uploadToContainer('layout name', $recordId, $containerFieldName, $containerFieldRepetition, $filepath, $filename); } catch(\Exception $e) { // handle exception }
不检查文件名
$containerFieldName = 'Picture'; $containerFieldRepetition = 1; $filepath = '/usr/home/acme/pictures/photo.jpg'; try { $dataApi->uploadToContainer('layout name', $recordId, $containerFieldName, $containerFieldRepetition, $filepath); } catch(\Exception $e) { // handle exception }
元数据信息
产品信息
try { $dataApi->getProductInfo(); } catch(\Exception $e) { // handle exception }
数据库名称
try { $dataApi->getDatabaseNames(); } catch(\Exception $e) { // handle exception }
布局名称
try { $dataApi->getLayoutNames(); } catch(\Exception $e) { // handle exception }
脚本名称
try { $dataApi->getScriptNames(); } catch(\Exception $e) { // handle exception }
布局元数据
try { $dataApi->getLayoutMetadata('layout name', $recordId); } catch(\Exception $e) { // handle exception }