У меня есть некоторые проблемы с получением хорошей структуры папок в моем проекте, и я хотел бы знать, какие другие способы я могу использовать для структурирования моих файлов.как структурировать модели MVC и модели ORM
В настоящее время я работаю в папке с MVC sturctured.
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));
}
}
?>
Выглядит хорошо пока, на мой взгляд ... Но есть еще одна вещь. Я также могу указать «модель» при использовании системы ORM. С помощью этой модели я могу в основном настроить правила проверки. Как так:
ORM::withModel('authModel');
Это позволяет ОРМ знать, что, прежде чем он добавляет новую строку (или обновляет существующий) в БД, что он должен проверить следующую модель первого для правил проверки.
<?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 вида моделей. Один, где я в основном использую getters/seters для получения и хранения данных в базе данных (от моего контроллера до моей модели).
И у меня есть другая модель, в которой установлены правила проверки ... Я не хочу смешивать их в одной папке. Поэтому я должен придумать для этого еще одну структуру. Что-то вроде:
www/
Controllers/
Models/
Repositories/
Entities/
Views/
Это просто, что моя модель не является реальным «хранилище», так как он не хранит какие-либо объектов в классе репо и не имеет методы фиксации() или что-нибудь подобное ,
Я также не могу хранить 2-ую модель (для валидаций) в папке Entities, потому что они не Сущности на всех ...
Любая идея, как я должен структурировать это .. ??
Почему бы вам не использовать некоторые готовы пойти farmeworks с ОРМ как Кохана? –
@webbandit Потому что я создаю свою собственную «инфраструктуру», чтобы получить больше опыта. Я знаю, что могу легко использовать другие фреймворки. Но я тоже хотел бы научиться этому, делая это сам. – Vivendi