【コラム】
基礎編ではおもに、FileMakerファイルに格納されているレコード操作に関するクラスを中心に紹介してきた。これまで何気なくnew FileMaker()と使ってきたFileMakerクラスだが、もちろん同クラスにも便利な機能が用意されている。何回かにわけて、FileMaker API for PHPの中枢となっているFileMakerクラスの使い方について紹介しよう。
FileMakerクラスで用意されている機能は、大別するとおもに次の4種に分類できる。
基礎編ではおもに各種コマンドクエリ発行のためのメソッドと関連するクラス、およびisError()といった一部を紹介してきた。FileMakerクラスにはそのほかにも、FileMaker API for PHPのバージョン確認手段や共通で利用するためのメソッド、FileMakerサーバ・ファイルの情報を取得する重要な機能が用意されている。本稿ではおもに「FileMakerファイルの各種情報を取得」する3つのメソッドのうちのひとつ、「listDatabases()」の使い方について紹介しよう。
listDatabases()ではコンストラクタやsetPropaty('hostspec', ...)で指定されたFileMakerサーバ上に公開されているFileMakerファイル一覧を配列で取得する。
/**
* Obtain a list of databases that are available with the current
* server settings and the current username and password
* credentials.
*
* @return array|FileMaker_Error Either an array of database names or an error.
*/
function listDatabases()
このメソッドに引数は存在しない。また実際のロジックが記載されている難読化されたImplementation/FileMakerImpl.phpを追うと、「-dbnames」クエリが使用されていることがわかる。このほかPHPソース中のコメントに次の一文がある。
with the current server settings and the current username and password credentials.
「指定したユーザ名とパスワードで認証できるファイルのみを表示する」とあるが、期待どおりの動作結果を得るにはあらかじめFileMakerサーバ側の「データベースサーバー > セキュリティ」の"ファイル表示フィルタ"で「各ユーザがアクセスを許可されているデータベースのみをリスト表示」にチェックを入れておく必要がある。「すべてのデータベースをリスト表示」になっている場合、PHP側で指定するユーザID・パスワードに関係なく公開されているFileMakerファイルすべてを取得してしまうため、充分に注意されたい。
実際に簡単なコードで試してみよう。
fmapi_listdb.php
<?php
include_once('../FileMaker.php');
$data = new FileMaker(null, 'http://localhost:80', 'admin', 'admin');
$result = $data->listDatabases();
if (FileMaker::isError($result))
{
// エラー処理..
echo 'FileMaker Error Code: ' . $result->getCode();
echo '<p>'. $result->getMessage() . '</p>';
}
else
{
// 正常処理..
var_dump($result);
}
?>
$data->listDatabases()でhttp://localhost:80/fmi/xml/fmresultset.xml?-dbnamesへのアクセス結果を取得し、結果として返る配列を$resultに格納、正常処理ならばvar_dump()で$resultを展開・表示する。Webブラウザで表示してみよう。
FileMaker Serverで公開されているファイルが表示された。ここで注意してほしいのは、取得するFileMakerファイルリストは拡張アクセス権に「fmphp」キーワードが指定されているFileMakerファイルのみが対象になるということだ。たとえばFX.phpのみの利用で「fmxml」キーワードしか指定していないファイルはlistDatabasesでは取得できないので留意されたい。
|
|
FileMakerでWebアプリをやるならお馴染み「アカウントとアクセス権の管理>拡張アクセス権」ダイアログ。listDatabasesで取得できる前提となるのは、キーワード「fmphp」が指定されたファイルのみ |
FileMaker Server Admin Consoleのデータベース管理画面。PHPにチェックが入っているファイルのみ取得可能 |
実際に「PHP」以外のキーワードを使用したファイルをいくつか用意してみた。
この状態でさきほど作成したfmapi_listdb.phpにアクセスしてみよう。
拡張アクセス権で「fmphp」キーワードを設定したFileMakerファイルのみがlistDatabases()の結果として取得できることが確認できた。取得できるFileMakerファイルが限定されてしまっているものの、listDatabases()はファイルメンテナンス用のPHPスクリプトや独自のFileMaker管理画面などを実装する際に活用できる機能だ。ぜひ覚えておこう。
| 【レポート】ファイルメーカー、日本初の「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] |
| プログラミング言語「Lobster」、オープンソースで登場 [18:09 6/20] |
| 3Dプリンタで1mm以下のバッテリを開発 [18:02 6/20] |
| TI、リチウムイオンバッテリの駆動時間を延長させる急速充電技術を発表 [15:05 6/20] |
| イーソル、ルネサスのHMI向けMPU「RZ/A」シリーズをサポート [14:55 6/20] |
| NEDOなど、先進型イットリウム系超電導線材の低コスト長尺製造技術を確立 [14:49 6/20] |
|
ドコモ、「ELUGA V P-06D」で設定が反映されない不具合を修正 [18:47 6/20] 携帯 |
|
Blu-ray対応の上位版もラインナップ「PowerDVD EXPERT 5」が発売 [18:43 6/20] パソコン |
|
森永乳業、「チェリオ チョコ&ミント」を夏季限定発売 [18:33 6/20] ライフ |
|
「夢みるブラ」シリーズ初の就寝専用ブラジャー発売 - トリンプ [18:33 6/20] ライフ |
|
【コラム】鉄道写真コレクション 第194回 近鉄初の「L/Cカー」2610系による急行宇治山田行 [18:30 6/20] 旅行 |