人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

LLフレームワークBOOKS「Ethna×PHP」をやっています。
P163のデータベース作成のところで質問です。

データベースを最初から自動で呼び出しておくための以下の記述を
/ethnatask/app/Ethnatask_ActinClass.phpに記述する、
と書いてありますが、どの辺りに記述すればいいのでしょうか?
初歩的な質問ですいませんが、ご回答よろしくお願いします。

ーーーーーーーーーーーーーー
var $db;

function EthnaTask_ActionClass(&$backend)
{
$result = parent::Ethna_ActionClass($backend);
$this->db = $this->backend->getDB();
return $result;
}
ーーーーーーーーーーーーーーー

以下は変更前のethnatask_ActinClass.phpです。

class Ethnatask_ActionClass extends Ethna_ActionClass
{
function authenticate()
{
return parent::authenticate();
}

function prepare()
{
return parent::prepare();
}
}
class Ethnatask_ActionClass extends Ethna_ActionClass
{
function authenticate()
{
return parent::authenticate();
}

function prepare()
{
return parent::prepare();
}
}
?>

●質問者: taityou3
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● DQNEO

やるとすれば初期化処理に相当するので__construct内に実装するのが妥当でしょう。

ですが、私はこれはバッドノウハウだと考えています。
アクションクラスがDBインスタンスを保持するというのがMVCでない気がします。
さらに、このようなことをすると全アクションクラスで(SQLを投げないアクションでも)必ずDB接続してしまいます。


例えば、秒間数百?数千リクエストを処理するAPIを、このアクションクラスの子クラスとして実装すると、DBに多数のコネクションがはられて異常負荷になったりします。
(実サービスで経験済み)


2 ● DQNEO

「ただ動けばいい」というなら、例えばauthenticate()の中に書けばよいでしょう。

※__construct内に実装する方法がわからないということは、Ethnaがわからない以前にそもそもPHPの知識が足りていないと推測されます。
パーフェクトPHPなどを読まれることをお勧めします。

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ