プロジェクトで適切なフォルダ構造を取得するのに問題があります。ファイルを構造化するために他にどのような方法を使用できるか知りたいです。
私は現在、MVC構造化フォルダーで作業しています。
www/
Controllers/
Models/
Views/
これまでのところ特別なことは何もありません。しかし、私はORMシステムも使用しています。これを使用すると、次のようにデータベースから「オブジェクト」を簡単に取得できます。
ORM::load('table');
さて、この種のコードはモデルに存在する必要がありますか?だから私はこのようなものを手に入れるでしょう:
<?php
class userModel
{
public function getAllUsers ( )
{
return ORM::load('table');
}
public function getUserById ( $id )
{
return ORM::load('table', 'userid=?', array($id));
}
}
?>
私の意見ではこれまでのところ良さそうです...しかし、もう1つあります。ORMシステムを使用するときに「モデル」を指定することもできます。このモデルを使用すると、基本的に検証ルールを設定できます。そのようです:
ORM::withModel('authModel');
これにより、ORMは、DBに新しい行を追加する(または既存の行を更新する)前に、最初に次のモデルで検証ルールを確認する必要があることを認識します。
<?php
class authModel //Or maybe authValidation??
{
// Method gets automatically triggered when an update is done with the ORM
public function onUpdate ( $obj )
{
if ( $obj->username == '' )
throw new \Exception('No username');
}
public function onInsert ( $obj )
{
// Validations here too.
}
}
?>
問題は、2種類のモデルがあることです。基本的にゲッター/セッターを使用してデータを取得し、データベースに(コントローラーからモデルに)保存するもの。
そして、検証ルールが設定されている別のモデルがあります...同じフォルダーに両方を混在させたくありません。だから私はこれのために別の構造を考え出さなければなりません。何かのようなもの:
www/
Controllers/
Models/
Repositories/
Entities/
Views/
モデルが実際の「リポジトリ」ではないというだけです。これは、repoクラスにオブジェクトが格納されておらず、commit()メソッドなどがないためです。
また、2番目のモデル(検証用)はエンティティではないため、エンティティフォルダーに保存できません...
これをどのように構成する必要があるかについてのアイデア..??