2012-03-11 7 views
0

私は多少MVCとオブジェクトが混在しています。私はそれを正しい方法にするのか、自分の方法を改善するために何かを変えることができるのだろうかと思いました。php mvcオブジェクトのやりとり

私は、MVCモデルとオブジェクトを使用するwebappを持っています。私もオブジェクトを使用することを選択したので、私はそれらをロードすることができます。オブジェクトの1つはTagオブジェクト(DBアクセスのためにベースモデルを拡張する)です。私のMVCフレームワークでは、ベースコントローラからモデルを読み込み、ベースモデルを作成することもできます(どちらも独自のインスタンスを実行します)。最初はコントローラからTagオブジェクトをロードしていました。今日はモデルからロードすることに決めました。両方の方法は正常に動作しますが、より良い選択とは何でしょうか?モデルとコントローラからコントローラ(tag_controller.php)

function getTags() 
{ 
    $this->_tagobject = $this->load->object('tagobject'); 
    $tags = $this->tags-getSomeTags(); 
} 

から

。私は柔軟なオブジェクトを持つ以外に真のメリットを見るように見えることはできませんので tagmodel.php

function __construct() 
{ 
    $this->_tagobject = $this->load->object('tagobject'); 
} 

function getTags() 
{ 
    return $this->_tagobject->getTags(); 
} 

tagcontroller.php

function __construct() 
{ 
    $this->_tagmodel = $this->load->model('tagmodel'); 
} 

function getTags() 
{ 
    $this->_tagmodel->getTags(); 
} 

改善のための任意の提案は、非常に歓迎されています。

+0

あなたのコードの一部を表示することができます –

+0

誰かが賢明な提案をする前に、より詳細な情報を提供する必要があります。 – Chriseyre2000

+0

確かに。私はいくつかのコードを追加しました。私はこれがそれをより良く説明することを願っています – MisterM

答えて

0

ほとんどのアプリケーションでは、タグオブジェクトとのやりとりは、CRUD操作(作成、読み取り、更新、削除)に従うので、モデルにもっと寄りかかります。

Zend Framework(MVCベースのPHPフレームワーク)でタグを使用する場合は、Zend_Db_Tableクラスを拡張するtagsクラスと、個々のデータオブジェクトを表すtagクラスを作成して、次のように使用できます。

$tags->insert(new Tag('keyword')); 
$tags->find('keyword'); 
$tags->delete('keyword'); 

コントローラにこの機能を配置することは意味がありません。それではまた、それは私の意見です。

+0

Zendでは、タグクラスはモデルからロードされますか? – MisterM

+0

私は例としてZFを使用していました。負荷がかかる限り、私はそれを自動ロードし(怠惰な初期化を参照してください)、必要なときに使用します。 –

関連する問題