【コラム】
FileMaker×PHPで作る、簡単・便利なWebアプリ
38 API for PHPの中枢、FileMakerクラス(2)
2009/11/18
前回はFileMakerクラスのおおまかな機能と、FileMakerサーバ・ファイルの各種情報を取得するためのメソッドの一つ「listDatabases()」を紹介した。今回は各種情報を取得するためのメソッド残り2つ「listLayouts()」「listScripts()」をあわせて紹介しよう。
ファイルのレイアウト一覧を取得 - listLayouts()
listLayouts()では指定したFileMakerファイルに用意されているレイアウトの一覧を配列で取得する。取得できるレイアウトは、使用するアカウントの権限で「変更可能」「表示のみ」権限が設定されているものに限られる。
listLayoutsメソッド (FileMaker.php 390-397行目より)
/**
* Obtain a list of layouts from the current database that are
* available with the current server settings and the current
* username and password credentials.
*
* @return array|FileMaker_Error Either an array of layout names or an error.
*/
function listLayouts()
このメソッドに引数は存在しない。また実際のロジックが記載されている難読化されたImplementation/FileMakerImpl.phpを追うと、「-db」クエリと「-layoutnames」クエリが使用されていることがわかる。
前回紹介したlistsDatabases()はFileMakerサーバに公開されているファイル単位だったが、listLayouts()では1FileMakerファイル単位となっている。前回のようにFileMakerファイル名を省略すると「802: Unable to open file」エラーが返るので注意しよう。それでは早速実際にコードを書いてみる。
fmapi_listlay.php
<?php
include_once('../FileMaker.php');
$data = new FileMaker('fmapi_test', 'http://localhost:80', 'admin', 'admin');
$result = $data->listLayouts();
if (FileMaker::isError($result))
{
// エラー処理..
echo 'FileMaker Error Code: ' . $result->getCode();
echo '<p>'. $result->getMessage() . '</p>';
}
else
{
// 正常処理..
echo '<pre>';
var_dump($result);
echo '<pre>';
}
?>
前回紹介したlistDatabases()のサンプルと違う箇所は、おもに次の2点。
- 5行目のnew FileMakerの第一引数に「レイアウト一覧を取得したいFileMakerファイル名」を指定
- 7行目で使用するメソッドをlistLayouts()に変更
7行目の$result = $data->listLayouts();でhttp://localhost:80/fmi/xml/fmresultset.xml?-db=fmapi_test&-layoutnamesへのアクセス結果を取得し、結果として返る配列を$resultに格納、正常処理ならばvar_dump()で$resultを展開・表示する。このほか、var_dumpで出力する結果を<pre>でかこみ見やすくしている。Webブラウザで表示してみよう。
上記のコードで使用したアカウントは「admin」。このアカウントはアクセス権セットが「完全アクセス」となっているため、すべてのレイアウト名を取得することが可能だ。独自のアクセス権セットを作成し「データアクセスとデザイン > レイアウト」で"カスタムアクセス権"を指定したアカウントを使用する場合は、アクセス権のあるレイアウトのみが取得される。
特定のレイアウトのみに権限を設定したアクセス権セット「test_listsLayout」を作成。拡張アクセス権「fmphp」にチェックを入れ、あたらしく作成したアカウント「user」に割りあてた。fmapi_listlay.php上で記述しているアカウント「admin」を「user」に置きかえて再度Webブラウザで開いてみよう。
アカウントとアクセス権セットが複数ある複雑な権限構成のファイルの場合、このlistLayouts()を活用すればレイアウト遷移用のUIやメンテナンス用の機能を楽に実装することが可能となる。
ファイルのFileMakerスクリプト一覧を取得 - listScripts()
listScripts()では指定したFileMakerファイルに実装されたFileMakerスクリプトの一覧を配列で取得する。取得できるスクリプトはlistLayoutsと同様、使用するアカウントの権限で「変更可能」「実行のみ」権限が設定されているものに限られる。
listScriptsメソッド (FileMaker.php 378-385行目より)
/**
* Obtain a list of scripts from the current database that are
* available with the current server settings and the current
* username and password credentials.
*
* @return array|FileMaker_Error Either an array of script names or an error.
*/
function listScripts()
このメソッドに引数は存在しない。内部の実装では「-db」クエリと「-scriptnames」クエリが使用されている。
FileMakerスクリプトを取得する単位や使い方は、listLayouts()とほぼ同じだ。実際にコードを書いてみよう。
fmapi_listscripts.php
<?php
include_once('../FileMaker.php');
$data = new FileMaker('fmapi_test', 'http://localhost:80', 'admin', 'admin');
$result = $data->listScripts();
if (FileMaker::isError($result))
{
// エラー処理..
echo 'FileMaker Error Code: ' . $result->getCode();
echo '<p>'. $result->getMessage() . '</p>';
}
else
{
// 正常処理..
echo '<pre>';
var_dump($result);
echo '<pre>';
}
?>
listLayouts()のサンプルの7行目で使用するメソッドをlistLayouts()からlistScripts()に変更しているだけだ。$result = $data->listScripts();でhttp://localhost:80/fmi/xml/fmresultset.xml?-db=fmapi_test&-scriptnamesへのアクセス結果を取得し、結果を展開・表示する。Webブラウザで表示してみよう。
アカウント名「admin」で利用可能なFileMakerスクリプトの一覧が表示された。listScripts()もlistLayouts()同様、使用するアカウントで利用できるFileMakerスクリプトのみを取得するようになっている。さきほどと同様にテスト用のアクセス権セット・アカウントを用意し、fmapi_listscripts.phpのアカウントを変更してWebブラウザで表示してみよう。
今回紹介したlistLayouts()とlistScripts()はインスタントWeb公開のような「FileMakerライクなWebアプリ」をPHPで実装する場合に重宝する。うまく使えば、複数権限での機能制限が正しく動作しているかを自動確認するユニットテストにも組みこめる。シンプルながらじつに活用方法の幅が広い機能だ。
関連記事
- 【レポート】ファイルメーカー、日本初の「FileMaker Conference 2009」開催[2009/10/30]
- ファイルメーカー、FileMaker Business Allianceメンバー向け割引購入プログラム[2009/6/4]
- ファイルメーカー、参加無料イベント「FileMaker Road Show 2009」開催[2009/6/4]
- 【インタビュー】ファイルメーカー粟倉社長に聞く、DBアプリ「Bento for iPhone」の国内展開[2009/6/3]
- 『ファイルメーカー選手権』でMacBook ProやVAIOを手に入れよう[2009/6/3]
- 【コラム】Mac Fan ソフトウェアレビュー 第58回 データベース作成ソフト「FileMaker Pro 10」[2009/5/25]
- FileMaker、iPhone/iPod touch版「Bento」が登場 - Bento 2.0と同期可能[2009/5/5]
- ファイルメーカー、FileMaker用テーマパックを期間限定で無料配布[2009/4/17]
- 【インタビュー】FileMaker Pro 10の魅力はいかに? - 米FileMaker社長 ドミニーク P.グピール氏に聞く[2009/2/24]
- ファイルメーカーの新社長に粟倉豊氏が就任[2009/2/2]
- インタフェースを一新した「FileMaker Pro 10」が発売[2009/1/6]
関連サイト
ヘッドライン
- ルネサス、RXファミリ第3弾としてモータ制御向け「RX62T」を製品化[07:00 2/10]エレクトロニクス
- Rambus、次世代携帯機器向けメモリ「モバイルXDR」を発表[21:16 2/9]エレクトロニクス
- Intel、基幹業務システム向け次世代プロセッサ「Itanium 9300」を発表[20:47 2/9]エレクトロニクス
- MicronとNanya、42nmプロセスを採用した2GビットDDR3を開発[20:07 2/9]エレクトロニクス
- ISSCC 2010 - 日立、1Gbpsあたり消費電力1mW以下のトランシーバ回路を開発[19:52 2/9]エレクトロニクス
- CSSを最適化する3つのツール[17:17 2/9]JavaScript / CSS / HTML
- TIOBEプログラミング言語人気 - Scratch/Erlang/Scala/JavaFX[17:17 2/9]プログラミング
- Microsoft、Red Hat Linuxサポートをひっそり追加[17:15 2/9]システム管理
- IBM、8コア/32MB eDRAM搭載の高速CPU「POWER7」を発表 - サーバも販売開始[17:02 2/9]サーバとストレージ
- 【レポート】UTM最新動向 - クラウドに耐えうる処理性能と管理性の強化が進む[14:42 2/9]セキュリティ





