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()が呼ばれてしまうのでこの方法は使えません。ご注意を。
- Newer: クリアエッジタイプって何?
- Older: カフェで仕事する
トラックバック:0
- このエントリーのトラックバックURL
- /blog/2007/08/cakephp_no_db.html/trackback
- Listed below are links to weblogs that reference
- CakePHP データベースを使わないアプリケーション from Shin x blog