Я реализовал то, что, по моему мнению, было довольно приличным представлением MVC в нескольких веб-приложениях, но, присоединившись к crackoverflow, я обнаружил, что, возможно, мои первоначальные определения были немного упрощенными, и поэтому мне действительно хотелось бы получить некоторые разъяснения по поводу различия между уровнем доступа к данным и уровнем модели или домена веб-приложения.
В контексте я в настоящее время использую объекты доступа к данным, которые реализуют функции CRUD для одной записи в таблице, которую представляет объект, а также функцию get(), которая возвращает объект, который позволяет мне выполнять итерацию по всем объектам которые соответствовали критериям функции get().
Эти объекты доступа к данным ссылаются непосредственно из сценариев контроллера, которые содержат мою бизнес-логику.
Если это имеет значение, я работаю в PHP и MySQL, но меня интересуют предложения, которые могут быть закодированы на других языках.
UPDATE: Для более конкретного примера у меня есть таблица, называемая пользователем (соглашение здесь - это уникальные имена таблиц), которая содержит такую информацию, как адрес электронной почты, активное состояние, имя пользователя, пароль, какая компания они принадлежат к и т.д. Этот базовый объект будет выглядеть так в коде:
class User implements DataAccessObject
{
protected $user_id;
protected $email;
protected $username;
protected $password;
protected $company_id;
protected $active // Bool that holds either a 0 or 1
public function __construct ( $user_id ) // Uses Primary Key to know which record to construct
{
$sql = //Sql to get this information from the database.
// Code necessary to assign member variables their values from the query.
}
public function insert(){}
public function update(){}
public function delete(){}
public static function get($filters, $orderVals, $limit){}
// An object such as user might also contain the following function definition
public static function login($username, $password){}
}
Похоже, что я мог убрать уровень DAO Layer и Model в упрощенную форму, которая сочетает в себе функции любого типа реального мира (такие как логин для пользователя) с функциями доступа к данным.