Home > CakePHP | PHP > CakePHP データベースを使わないアプリケーション

CakePHP データベースを使わないアプリケーション

この記事の所要時間: 220

CakePHPはデータベースを使用することが前提となっているので、フレームワークがデータベースへの接続を自動的に行います。ただマッシュアップ系のサービスなどデータベースを全く使用しない場合はこの機能を無効にしたくなります。

そこでCakePHPアプリケーション全体でデータベースを使わない方法です。

ちなみにこの方法では[app/config/database.php]を作成する必要もありません。

1. モデルを使わない

コントローラの$usesにnull or array()を設定することによりモデルを使用しないようにできます。データベースへの接続はモデルを介して行うのでモデルを使わなければ接続処理は行われません。(セッションやキャッシュをDBに保存する場合は別ですが)

<?php
class HogeController extends AppController {
  var $uses = null;
}
?>

ただこの方法だと当然ながらモデルは使用できませんし、各コントローラに$uses=nullを設定する必要があります。

2. AppModelに$useTableを設定する

モデルの$useTableにfalseを設定することにより、そのモデルではデータベースを使用しないようにできます。これを利用して基底クラスAppModelの$useTableにfalseを設定します。

[app/app_model.php]

<?php
class AppModel extends Model {
  var $useTable = false;
}
?>

この方法ならAppModelに設定するだけで、全てのモデルでデータベースを使用しなくなります。1.よりも手間がかからないのでオススメです。

フレームワークのビューテンプレートに注意

いずれの方法を取った場合でもデフォルトのルーティングのままで[http://example.com/]にアクセスするとデータベースに接続できないといったエラーメッセージが表示されます。

これは出力されるビューテンプレート[cake/libs/view/templates/pages/home.thtml]にてデータベース接続を行っているためです。このビューテンプレートはアプリケーション稼働時に出力することは通常無いので無視して構いません。

なおこのビューテンプレートへのルーティングをコメントアウトしてしまえば表示されなくなります。

[app/config/routes.php]

<?php
// コメントアウト
//	$Route->connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
?>

DATABASE_CONFIGを空にする方法はNG

“データベースをまったく使わない設定” フォーラム – CakePHP Users in JapanにDATABASE_CONFIGクラスを空にする方法が紹介されていますが、1.1.16.5421ではObject#cakeError()が呼ばれてしまうのでこの方法は使えません。ご注意を。

Pocket

follow us in feedly

トラックバック:0

このエントリーのトラックバックURL
http://www.1x1.jp/blog/2007/08/cakephp_no_db.html/trackback
Listed below are links to weblogs that reference
CakePHP データベースを使わないアプリケーション from Shin x blog

Home > CakePHP | PHP > CakePHP データベースを使わないアプリケーション

検索
フィード
メタ情報

Return to page top