Времени уже на сегодня не остается, вот что сделал (если у вас хватит терпения изучить этот код))
http://mensland.ru/phpclub/ - пока только вывод сообщений
http://mensland.ru/phpclub/code/ - коды
Структура классов:
class.BaseModel.php - базовый класс любой модели
class.Guestbook.php - модель гостевой
class.User.php - модель пользователя
class.BaseController.php - базовый контроллер
class.GuestbookController.php - контроллер гостевой
class.View.php - вью
class.Request.php - класс запроса
class.database.php - обертка для СУБД
sql.txt - SQL
template.txt - шаблон
Что очень смущает: это инстанцирование моделей в конструкторе контроллера
PHP:
$ctrl = new GuestbookController(new User(), new Guestbook());
А потом, в контроллере, приходится всё равно делать
PHP:
$user = $this->modelUser->getObjectById($request->id_user);
для получения объекта реальной сущности. Тем самым мы получаем ДВА объекта. Объект $user, который содержит информацию о реальном пользователе, и объект модели пользователя, переданный через конструктор, который не привязан к конкретному пользователю, а является просто объектом.
Поэтому мне всётаки кажется более правильным инстанцирование любых моделей не в конструкторе контроллера, а непосредственно в его коде, там, где это необходимо, когда мы знаем, с каким параметром (ID) инстанцировать класс модели. Т.е. в идеале я вижу решение, когда в конструктор контроллера ничего не предается, а объекты модели создаются через статические getObjectById:
PHP:
$user = modelUser::getObjectById($request->id_user);
// далее работаем с этим юзером, имея всего один объект модели - $user
if (!$user->getId())
{
$this->error = 'Хакер? Хе-хе....';
}
echo 'Тебя зовут '.$user->user_name;