Здравствуйте, в свободное время написал небольшой велосипед, реализацию парадигму программирования "Model-View-Controller". Это попытка понять последнее на более глубоком уровне, а не просто используя фреймворк из коробки. До этого работал с Yii фреймворком, который порекомендовал один пользователь этого форума. Поэтому идейным вдохновителем был он (фреймворк) и частично самописный фреймворк, который используется на работе. В этой теме я ожидаю полезных ответов, исходный код можно найти здесь. Благодарю за внимание.
Понравился валидатор, по использованию в feedback - код самого валидатора не изучал. Непонятно, кому actionIndex() в PageController.php возвращает объект, и почему при этом actionView ничего не возвращает. Непонятно, зачем в View::render передавать передавать аргументы для шаблона. Я вообще не перевариваю такой логики, render - это "аминь", ну если там можно передать аргумент кешировать или нет - еще куда ни шло, но не переменные же шаблона. Код (Text): $view = new View(); $view->assignArray($params); $view->render(); - труЪ. Это бы не было недостатком, если бы был другой способ передачи переменных в шаблон, пусть простейшим $view->name = 'Vasya'. Сессии. Такое ощущение, что вы просто не осилили session_save_handler. Нет никаких причин отказываться от работы с сессиями посредством массива $_SESSION, в пользу ОО, которое к тому же портит структуру этого массива. Это бы тоже не было недостатком, если бы сессии из фреймворка вообще не трогали этот массив. На полные слова Controller в именах файлов явно не Yii вдохновил.
[vs], спасибо за ответ. Валидатор еще не готов до конца, думаю, смотрел реализацию в ZF, понравилось, думаю, сделать примерно также, применить шаблон проектирования Factory Method, как вариант, еще точно не решил. Также хочу добавить метод, который будет генерировать код для jQuery плагина jQuery Validation, чтобы обеспечить клиентскую валидацию основываясь на правилах описанных в модели. Что касается действия indexAction в контрлллере PageController (именование не из Yii, это правда, не помню почему так сделал ), то действительно, возвращаеть объект не обязательно, где-то видел такое, сейчас не вспомню где. По поводу метода render() не понял немного, в метод передается имя представления. Класс для работы с сессий и БД - прототипы, буду доработывать. По классу для работы с сессий есть такой момент, у меня на работе было нужно реализовать хранение сессий в Memcache, при этом так образом, чтобы если используются разные домены (может быть несколько сервисов), то последние должны иметь доступ к сессии друг друга...
Я про $params здесь Код (PHP): public function render($viewName, array $params = array()) { $viewFile = $this->_viewPath . DIRECTORY_SEPARATOR . strtolower($viewName) . '.php'; if (!file_exists($viewFile)) { return new ErrorHandler(404, 'View ' . $viewName . ' not found.'); } extract($params); обычно аналог этого $params наполняется до вызова render(), в котором происходит exctract. set_session_save_handler() как раз и нужна для того, чтобы передать управление хранением сессий пользовательским функциям, сохраняя доступ к ней через $_SESSION.
Посмотрел YF, сделано так же, в ZF через метод assign и магический метод __set. Как на меня, то в первом случае удобно, что после вызова метода render не нужно чистить за собой, также не возникает баяна на много строк из методов assign. Для меня не критично, нравится как сделано в YF и в ZF. Я был не прав, когда согласился, что именование файлов контроллеров в YF не такое, он такое За сессии спасибо за наводу, обязательно рассмотрю