Cakephp

29
Copyright © YusukeAndo. 2006. All rights reserved. 1 CakePHP入門 PHPでRailsライクな高速開発 PHP勉強会 第9回発表資料 2006年2月25日 安藤祐介

Transcript of Cakephp

Page 1: Cakephp

Copyright © YusukeAndo. 2006. All rights reserved. 1

CakePHP入門

PHPでRailsライクな高速開発

PHP勉強会 第9回発表資料

2006年2月25日 安藤祐介

Page 2: Cakephp

Copyright © YusukeAndo. 2006. All rights reserved. 2

はじめに

巷で話題の“Ruby On Rails”

Rubyで実装されたMVCフレームワーク

同じ事を繰り返さない - Don’t Repeat Yourself

設定よりも規約 - Convention over Configuration

ActiveRecordによりコードを書かずにDB機能

「高速」開発。(プロトタイプ、改修、運用)

→注目度が上昇中10分で作るRailsアプリ for Windows

などの試みが注目されたり・・・

Page 3: Cakephp

Copyright © YusukeAndo. 2006. All rights reserved. 3

そして

Ruby On RailsのPHP版とも言えるのが・・・

(正確にはRailsライクなフレームワークの中の1つ)

なのです

Page 4: Cakephp

Copyright © YusukeAndo. 2006. All rights reserved. 4

CakePHPの特徴

フロントコントローラー、MVCモデル

設定不要、サブディレクトリのみで動作可能

アクティブレコード、組込みのCRUD

PHP4、PHP5両対応

「あらゆるレベルのプログラマーにとって快適な環境を」

CakePHP development team

Page 5: Cakephp

Copyright © YusukeAndo. 2006. All rights reserved. 5

おおまかな構造

アプリケーションのルート

フレームワークのライブラリ

設定ファイル

コントローラー

モデル

ビュー(テンプレート)

→以上の構造で丸ごと設置する為、共用型サーバでも容易。

Page 6: Cakephp

Copyright © YusukeAndo. 2006. All rights reserved. 6

動作の手順

実際に動かしながら触ってみましょう!

Page 7: Cakephp

Copyright © YusukeAndo. 2006. All rights reserved. 7

アーカイブの入手

cakephp.orgからアーカイブを入手。

ここです。

Page 8: Cakephp

Copyright © YusukeAndo. 2006. All rights reserved. 8

セットアップ

展開して出来たディレクトリを任意にリネーム

Apacheから見える所にがっつりと設置

あとはindex.phpにアクセスすれば動作完了

※htaccessによるoverride、rewriteが出来るようにしておく

 Rewriteが使えない場合はcore.php内の設定を修正

Page 9: Cakephp

Copyright © YusukeAndo. 2006. All rights reserved. 9

画面イメージ

データベース設定が無い警告

Page 10: Cakephp

Copyright © YusukeAndo. 2006. All rights reserved. 10

データベース接続設定

データベースへの接続設定を行う

app/config/database.php に設定を記入

ひな型をコピーすると簡単

var $default = array('driver' => 'mysql',

'connect' => 'mysql_pconnect',

‘host’ => ‘localhost’,     ホスト名

‘login’ => ‘user’,        ユーザ名

‘password’ => ‘password’,   パスワード

‘database’ => ‘project_name’, DB名

'prefix' => '');

Page 11: Cakephp

Copyright © YusukeAndo. 2006. All rights reserved. 11

画面イメージ

データベース接続成功

Page 12: Cakephp

Copyright © YusukeAndo. 2006. All rights reserved. 12

テーブル作成

データベースにアプリで利用するテーブルを作成

一定のネーミングルールで作成(必須!)

ネーミングルール

テーブル名は複数形英語 (books toys musics …)

プライマリキーは“id”とする

外部キーは“genre_id” “book_id” のように単数_id とする

“created” “modified”というDATETIMEを作るとベター

Page 13: Cakephp

Copyright © YusukeAndo. 2006. All rights reserved. 13

画面イメージ

コントローラーが無い

作るべきコード

Page 14: Cakephp

Copyright © YusukeAndo. 2006. All rights reserved. 14

コントローラー作成

/books にアクセスするとコントローラーが見つからないエラーが・・・

エラー画面で指示されたとおりにクラスを作成

 app/controllers/%name%_controller.php

<?php

class BooksController extends AppController

{

}

?>

Page 15: Cakephp

Copyright © YusukeAndo. 2006. All rights reserved. 15

モデル作成

今度はモデルが見つからないらしい・・・

AppModelの派生クラスを作成

app/models/%name%.php

<?php

class book extends AppModel {

}

?>

Page 16: Cakephp

Copyright © YusukeAndo. 2006. All rights reserved. 16

画面イメージ

メソッドが無い

Page 17: Cakephp

Copyright © YusukeAndo. 2006. All rights reserved. 17

scaffoldの利用

メソッドが無いといわれたが・・・?

現段階ではロジックを実装するindex() メソッド等が無い

Railsにもあるアプリの「骨組み」を提供する機能

コントローラーをscaffold指定すれば「骨組み」が利用可能

<?php

class BooksController extends AppController

{

var $scaffold;

}

?>

Page 18: Cakephp

Copyright © YusukeAndo. 2006. All rights reserved. 18

動作確認

組込みのCRUDが利用可能です

Create Read Update Delete の機能

マスタのメンテナンス程度であれば十分

カラム追加などにも自動で追随する

Page 19: Cakephp

Copyright © YusukeAndo. 2006. All rights reserved. 19

入力画面

カラムの型に応じた入力欄を生成

Page 20: Cakephp

Copyright © YusukeAndo. 2006. All rights reserved. 20

単票形式での表示

Page 21: Cakephp

Copyright © YusukeAndo. 2006. All rights reserved. 21

カスタマイズ

組込みのCRUDも便利は便利・・・

でもユーザ向けの表示は細かい指定が必要

コントローラーを修正し、テンプレートを作ればOK

scaffoldとの共存もできる

Page 22: Cakephp

Copyright © YusukeAndo. 2006. All rights reserved. 22

コントローラーの修正

app/controllers/%name%_controller.phpにindexメソッドを追加する

<?php

class BooksController extends AppController

{

var $scaffold;

function index(){

$this->set('data',$this->book->findAll());

}

}

?>

Page 23: Cakephp

Copyright © YusukeAndo. 2006. All rights reserved. 23

テンプレートの作成

app/views/%name%/index.thtml を作成

Controllerでsetした名前でハッシュがある

<table>

<tr><th>書名</th><th>登録日</th></tr>

<?php foreach ($data as $row): ?>

<tr>

<td><?php echo $row['book']['title'];?></td>

<td><?php echo $row['book']['created'];?></td>

</tr>

<?php endforeach; ?>

</table>

Page 24: Cakephp

Copyright © YusukeAndo. 2006. All rights reserved. 24

カスタマイズの確認

カスタマイズした表示ができました

scaffoldの機能もURLを叩けば動く(リンクすれば良い)

リレーションも使えます

Page 25: Cakephp

Copyright © YusukeAndo. 2006. All rights reserved. 25

画面イメージ

モデルに2行程度の修正

で従属データも取得

Page 26: Cakephp

Copyright © YusukeAndo. 2006. All rights reserved. 26

まとめ

メリット

  簡単セットアップ、スクリプト的な記述

  validate、セッション管理も組み込まれている

デメリット

  情報が少ない、マルチバイト関連のノウハウ

  習得コストは無いとは言えない

Page 27: Cakephp

Copyright © YusukeAndo. 2006. All rights reserved. 27

Let‘s Bake!

CakePHPなかなか面白そうなフレームワークです。

小回りが利きそうな開発でなら十分に威力を発揮

するのではないでしょうか?

皆さんも今日からBakerです!

Page 28: Cakephp

Copyright © YusukeAndo. 2006. All rights reserved. 28

謝辞

参考サイト

10分で作るCakePHPアプリ for Windows

http://p4life.jp/cake/

Page 29: Cakephp

Copyright © YusukeAndo. 2006. All rights reserved. 29

質疑応答 

ご静聴ありがとうございました。