FMCakeMixってウマいの?

7,506 views
7,381 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
7,506
On SlideShare
0
From Embeds
0
Number of Embeds
188
Actions
Shares
0
Downloads
8
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • カスタムWeb公開の話です。興味のある方のご参考になればうれしいです。
    そういえば、某巨大掲示板のFIleMakerスレッドでもWebアプリケーションの話題があがっていましたが...
  • はい、発表の概要ですが、ちょっとギリギリっぽいので、早足でいきます。
    Web公開に興味があるんだけど、意味不明でした。と言う方がいらっしゃいましたら、飲み会の時にでも気軽につかまえてください。
  • CakePHPはオープンソースで作成されている、PHPのWebアプリケーションフレームワークです。
    Ruby on Railsの影響を非常に受けているので、やはり「設定より規約」が重視されており、少ないコード量でWebアプリケーションを構築することができます。
  • FMCakeMixは、前述のCakePHPで使用できるFileMaker用のデータベースドライバーです。
    内部的にFX.phpを利用しているので、カスタムWeb公開機能はXMLを利用することになります。
  • CakePHPはMVC構造のアプリケーションフレームワークですが、MVCという言葉を聞いたことないために簡単に説明します。プログラムを、モデル、ビュー、コントローラという3つの要素に分割する考え方です。
  • FMCakeMixのおかげで、CakePHPのモデルが利用できるようになります。
    CakePHPのモデルでは、ActiveRecordパターンのO/Rマッパー、アソシエーション、データバリデーションなども機能を利用でき、面倒なデータベース処理の記述がシンプルになります。またデータベースが抽象化され、DBMSを変更しても設定を変更するだけで移行できます。
    まさに、ありがとう!FMCakeMixという感じです。
  • インストール方法は難しくありません。FMCakeMixのUser Guideを読めば簡単でしょう。
  • サンプルのデータベースを作成します。
    簡単な構造です。テーブル1つ、フィールド3つです。
  • CakePHPのデータベース設定ファイルを編集します。
    driverにfmcakemixとします。また、Fx.php同様dataSourceTypeも指定してください。
  • では、CakePHPの実際のコーディングです。
    まずはモデルの記述をします。太字はファイルのパスを表しています。
    今回のサンプルでは最低限の記述、データベース名とレイアウト名のみです。
  • 次にモデルの記述をします。先ほど同様、太字はファイルのパスです。
    7行目でusersテーブルの全レコードを取得して、8行目でビューにそれを渡します。
    4行目でページネーションの指定をしており、1ページに15件表示するようにしています。
  • 最後にビューを記述します。
    <td>の部分では、渡されたデータを繰り返して表示しています。
    上の<th>では、フィールド名の見出しであり、ソートボタンになっています。
    最後の行は、ページ番号のリンクボタンを表示させています。
  • では実際に見てみましょう。
  • FMCakeMixってウマいの?

    1. 1. FMCakeMix 2009/10/12 | Kentaro Suzuki
    2. 2. • Web FileMaker Web 2009/10/12 | Kentaro Suzuki
    3. 3. • CakePHP • FMCakeMix • MVC • FMCakeMix • • • • • 2009/10/12 | Kentaro Suzuki
    4. 4. CakePHP • CakePHP enables PHP web applications. to rapidly develop robust users at all levels Google CakePHP PHP Web • PHP Web • 2009/10/12 | Kentaro Suzuki
    5. 5. FMCakeMix • FMCakeMix: A Full Read/Write Datasource for FileMaker By Alex Gibbons • CakePHP FileMaker • Web (XML) • FX.php 2009/10/12 | Kentaro Suzuki
    6. 6. MVC MVC 3 Wikipedia • (Model) → • (View) → UI • (Controller) → 2009/10/12 | Kentaro Suzuki
    7. 7. FMCakeMix • FMCakeMix CakePHP • ActiveRecord O/R • Fx FileMaker ... • SQL • DBMS • • 2009/10/12 | Kentaro Suzuki
    8. 8. • FileMaker Server • Web XML • CakePHP • http://cakephp.jp/ • FMCakeMix • http://github.com/beezwax/FMCakeMix/ • Install the dbo_fmcakemix.php file into yourcakeinstall/app/models/ datasources/dbo • Fx.php • FX.php, FX_Error.php, FX_Constants.php, and image_proxy.php files at the root of the yourcakeinstall/vendors folder. 2009/10/12 | Kentaro Suzuki
    9. 9. FileMaker users • oreno_db.fp7 • users • id • name • email ※ fmxml 2009/10/12 | Kentaro Suzuki
    10. 10. CakePHP /app/config/database.php <?php class DATABASE_CONFIG { var $default = array( 'driver' => 'fmcakemix', 'database' => 'oreno_db', 'dataSourceType' => 'FMPro7', 'persistent' => false, 'scheme' => 'http', 'port' => 16014, 'host' => '127.0.0.1', 'login' => '', 'password' => '', 'encoding' => 'utf8' ); } ?> 2009/10/12 | Kentaro Suzuki
    11. 11. /app/models/user.php <?php class User extends AppModel { var $fmDatabaseName = 'oreno_db'; var $defualtLayout = 'users'; } ?> 2009/10/12 | Kentaro Suzuki
    12. 12. /controllers/users_controller.php <?php class UsersController extends AppController { var $paginate = array('limit' => 15); function index() { // $result = $this->paginate('User'); $this->set('rows', $result); } } ?> 2009/10/12 | Kentaro Suzuki
    13. 13. /app/views/users/index.ctp <table> <tr> <th><?php echo $paginator->sort('#', 'id');?></th> <th><?php echo $paginator->sort('Name', 'name');?></th> <th><?php echo $paginator->sort('E-mail', 'email');?></th> </tr> <?php foreach($rows as $r): ?> <tr> <td><?php echo h($r['User']['id']);?></td> <td><?php echo h($r['User']['name']);?></td> <td><?php echo h($r['User']['email']);?></td> </tr> <?php endforeach;?> </table> <?php echo $paginator->numbers();?> 2009/10/12 | Kentaro Suzuki
    14. 14. • 2009/10/12 | Kentaro Suzuki
    15. 15. • CakePHP Web • FMCakeMix CakePHP • XSS CSRF 2009/10/12 | Kentaro Suzuki

    ×