2012-03-20 3 views
0

コントローラを介して直接サーバーまたはネットワーク共有にアクセスする必要がありますか?Zend Frameworkを使用すると、コントローラまたはモデルを介してファイルシステムにアクセスする必要があります

私は、コントローラに、このようなコードを使用することができます:

$path = '/var/www/uploads'; 
$fileArray = array(); 
$dir = new DirectoryIterator($path); 
foreach ($dir as $fileinfo) { 
    if (!$fileinfo->isDot()) { 
    $fileArray[] = array('filename' => $fileinfo->getFilename(), 'extension' => $fileinfo->getExtension(), 'size' => $this->bytesToSize($fileinfo->getSize(),2), 'modified' => date('d/m/Y H:i', $fileinfo->getMTime())); 
    } 
} 
$this->view->fileList = $fileArray; 

これはMVCで物事を行うには間違った方法だたびに繰り返すことを意味します。ファイルシステムをマップするモデルを作成すべきか、Zendはこれを行うことができる何かを持っていますか?

など//擬似コード機能の類似した種類で

$directory = new Zend_Directory(); 
$this->view->filelist = $directory->listFiles(); 
$directory->addFile('filepath'); 
$directory->deleteFile('filepath'); 

、アップロード、削除、名前の変更、移動、コピー、

任意のアイデア?

+2

私はモデルを作成します。 –

+0

あなたの例のようにこの配列をビューに渡す場合は、ビューヘルパーを作成してください。同じ配列を取り出してコントローラで使用する場合は、アクションヘルパーを作成してください。より多くの機能が必要な場合は、ここで提示してモデルを作成してください。 – RockyFord

+0

私が探していた主な機能の1つは、ファイルを特定のファイル構造に保存する機能でした。例: 請求書が与えられたら、 /basepath/customer/invoice/file のパスでフォルダに保存する必要があります。このパスはオンザフライで作成する必要があり、ドキュメントタイプを変更する関数を作成することを想定していました、すなわちインボイスと顧客IDをパスに入力し、ファイルを保存します。 – Quanano

答えて

0

モデルにしてください。そうすれば、単体テストを実行したり、新しいコントローラを簡単に交換したり、他のプロジェクトでモデルを再利用したりすることができます。

大まかには、次のとおりです。データ(データベース、サービス、ファイルなど)と直接対話する場合は、それをモデルにします。

そして、実際にそこにZend_DirectoryZend_Filelink)のための提案があるが、それは2009年

ので、その上で行われたすべての作業のようには見えませんが、プラグインとしてあなたのコードをパッケージ化を検討する必要があります他人が使うことができる。多分上記のリンクを出発点として使用してください。

+0

モデルのように聞こえます。私は行って、一度終了すると貢献する価値があるかどうかを確認します。あなたが私に与えたリンクがかなり疎なので、あなたはZend Directory/Fileモデルに何を含めるでしょうか? – Quanano

+0

スクロールして、「Class Skeletons」と呼ばれるセクションがあります。これをモデル化することができます。コメントの1つが指摘しているように、この機能はすでにSPL(DirectoryIterator:http://www.php.net/manual/en/class.directoryiterator.php、一般的なリファレンス:http://www.php。 net/manual/en/book.spl.php)。この理由のためにあなた自身のプラグインを作りたくないかもしれません。モデルはSPLイテレータとオブジェクトと直接対話する必要があります。ただし、実際のデータストレージプラットフォームはコントローラー上で重要ではないため、コントローラではSPLオブジェクトを使用しないでください。モデル –

+0

にお寄せいただきありがとうございます。確認してみるよ。 – Quanano

関連する問題