ぐらめぬ・ぜぷつぇんのはてダ

2008/11/24以降のメインブログはこちらになります。 : http://www.glamenv-septzen.net/

本はてなダイアリにはコメント・トラックバックを受け付ける記事を公開します。

2008-02-26

[] モデルを使わないコントローラ再考

$usesにばしばし追加してください。逆にモデルを使いたくない場合は

class PostController extends AppController{

public $uses = null;

cakePHP モデルなしのコントローラーって作れないの? - WEBぷろぐらま〜 システム開発エトセトラ

・・・えっ 空配列じゃないの? Σ(´酈`lll)

「column DBテーブルを使わない場合にも使えますか?」(「CakePHP ガイドブック」(マイコミ), 141P, 初版第一刷)

CakePHPは、DBテーブルを使わない場合でも問題なく使用できます。

...

2. コントローラー内で設定する場合

 コントローラーに、var $uses = array(); と書くと、このコントローラーはモデルを読み込まなくなりますので、モデルファイル自体を作成する必要がなくなります。

...

$usesにばしばし追加してください。逆にモデルを使いたくない場合は

class PostController extends AppController{

public $uses = null;

cakePHP モデルなしのコントローラーって作れないの? - WEBぷろぐらま〜 システム開発エトセトラ

・・・えっ 空配列じゃないの? Σ(´酈`lll)

「column DBテーブルを使わない場合にも使えますか?」(「CakePHP ガイドブック」(マイコミ), 141P, 初版第一刷)

CakePHPは、DBテーブルを使わない場合でも問題なく使用できます。

...

2. コントローラー内で設定する場合

 コントローラーに、var $uses = array(); と書くと、このコントローラーはモデルを読み込まなくなりますので、モデルファイル自体を作成する必要がなくなります。

...

で、気になってソースをあさってみました。以前自分が遭遇したのは、$usesをデフォルトのfalseのままにした結果「Missing Model」エラーが表示された現象です。そこを手がかりにGrepしてみると、(あ、例によりバージョンは1.1.19です)

cake/libs/error.php:

<?php
...
/**
 * Renders the Missing Model class web page.
 *
 * @param unknown_type $params
 */
	function missingModel($params) {
...

というのが見つかりました。この中で実際に"Missing Model"という文字列を設定してエラー画面をレンダリングしているようです。ということはこの関数を呼んでいる場所は・・・ということでcontroller.phpをgrep。

二カ所見つかりました。一カ所は$usesが真の時に、何段かif文がネストした先で呼ばれています。今回は$usesがfalseかnullかでどう変わるかなので、ここはスルーして良いでしょう。もう一カ所がビンゴです。

cake/libs/controller/controller.php:

<?php
...
if (class_exists($this->modelClass) && ($this->uses === false)) {
    ...
    return true;
} elseif ($this->uses === false) {
    return $this->cakeError('missingModel', 
        array(array('className' => $this->modelClass, 'webroot' => '', 'base' => $this->base)));
}

うーん、ここですね。で、なんでfalseだとMissingModelになってnullだとならないかも分かりました。三重等号で比較しているため、型チェックが発生しているからですね。

以上。

icpa0icpa0 2012/04/06 12:29 はじめまして、ICPAの中原でございます。
突然のメールで失礼致します。ブログを拝見させて頂いてメールさせて頂いております。
私どもは外資系ヘッドハンティングファームでございます。外資系IT企業、コンサルティングファーム、国内IT企業のエンジニアポジションをご紹介しております。
現在、クライアント(自社サービスを持った企業)の強いご希望でスマートフォン向けアプリエンジニア、アプリケーションエンジニア、サーバー、DB周りのエンジニアを急務で探しておりまします。
管理人様が上記PHPでプログラミングが出来るエンジニアかと思い非常に興味を持っております。
もし、転職したい、作るプロダクトを変えたい、新しい技術を職場で学びたいという希望があれば、是非ご連絡ください。
何卒、よろしくお願いします。
E-mail nakahara@icpa.com

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

トラックバック - http://d.hatena.ne.jp/msakamoto-sf/20080226/1204000805