Ответы пользователя по тегу Фреймворки
  • Какой фрэймворк учить и по каким мануалам?

    dohlik
    @dohlik
    Я вовсю пропагандирую Kohana )) ИМХО, фигня насчет документации.

    Официальный мануал на английском
    Неофициальная вики (сборник рецептов)
    Отличный форум (в том числе и русская ветка)
    Куча русских мануалов (kohana3.ru, kohanaframework.su, 101.brotkin.ru) и блогов

    По поводу рефакторинга — ну он же в правильном направлении идет )) Тем более, что последняя ветка (3.3, еще пока RC) ИМХО достаточно красиво выглядит, чтобы этот самый рефакторинг на ней закончить.
    Ответ написан
    Комментировать
  • Типизированные Request и Response

    dohlik
    @dohlik
    ИМХО, задача реквеста — принять входящие данные (POST/GET/COOKIE и прочие заголовки), инициировать запуск нужного метода контроллера, и вернуть реквест с результатом. Соответственно, вся логика (валидация, запросы к БД и т.д.) должна лежать в контроллере, но не запросе. Request — служебный класс, и его имеет смысл разбивать на подклассы, если возможны различные варианты обработки входящего запроса, но никак не подстраиваться под бизнес-логику.
    Ответ написан
    1 комментарий
  • Какой PHP-фреймворк обладает лучшей русскоязычной документацией?

    dohlik
    @dohlik
    НЕ Kohana ;) Но, в целом, с любым фреймворком будет сложно, если не знаешь языка. Да и как читать php.net и StackOverflow без английского?
    Ответ написан
    Комментировать
  • Модульная архитектура на примерах..?

    dohlik
    @dohlik
    Отвечу как пользователь фреймворка Kohana (с той самой КФС).

    В проекте имеются условные папки Application, System и Modules (естественно, названия могут быть любыми). В System хранится код ядра фреймворка (базовые классы для роутинга, MVC/HMVC, хэлперы и т.д.). В Modules — куча подключаемых модулей, как стандартные (Database, ORM, Cache и т.д.), так и собственные разработки. Ну и в Application остается код, специфичный для данного приложения (т.е. который Вы не планируете переносить на другие приложения).

    Любой используемый модуль должен быть явно объявлен в системе (Kohana::modules($module_list)). При добавлении модуля (или списка модулей) происходит следующий алгоритм:

    0. В главном классе модуля есть статическая переменная $_paths, в которой хранятся все пути КФС. Изначально в него добавляется путь к Application.
    1. Проверяется путь к модулю, если нет — модуль игнорируется.
    2. Модуль добавляется в $_path. Делается проверка на существование файла init.php в корне модуля. Если он есть, то выполняется. Таким образом, можно осуществлять какие-то стартовые действия (загрузка конфигов, добавление роутинга и т.д.).
    3. Последним в список добавляется System.

    Структура файлов и папок одинаковая, что в Application, что в System, что в каждом модуле. После выстраивания списка путей в ряд мы получаем возможность проходиться по нему в поиске нужного класса. Например, если есть модули A, B, C, а в B и C имеется класс Foo, то система выберет класс из модуля B, так как он идет раньше в списке путей. На очередность влияет порядок упоминания классов в списке вызова Kohana::modules(). Пути при каждом запуске генерируются заново, но вот результаты поиска файлов кэшируются, чтобы меньше шуршать по винту.

    Для понимания такой структуры очень полезно посмотреть на эту картинку. В результате часто собственно проект (Application) состоит из конфигов и файла запуска (bootstrap), все остальное выносится в модули.

    Кроме того, гибкость и расширяемость фреймворка достигается засчет «пустых» классов, например есть Database и Kohana_Database (extends Database). Весь изначальный функционал реализован в Kohana_Database, но в коде мы используем Database. Соответственно можно где-то в Application или в одном из модулей добавить свой класс Database (в таком случае система загрузит его, а не аналог из System), и в нем сделать нужные изменения.

    PS. А эвенты все равно удобная штука (хоть и достаточно простые — Event::add() и Event::run()). Их в Kohana v3 штатно уже нет (т.к. имеется достаточный контроль над выполнением Request'а), поэтому приходится вручную прикручивать для собственных событий.
    Ответ написан
    3 комментария
  • Выбор Моего Первого Фреймворка (PHP)

    dohlik
    @dohlik
    Я там выше в комментах уже отписался про Kohana. Отличный фрейморк, смотрите сразу на 3.0. Ничего лишнего — изначально качаете ядро, все остальное (даже Database) добавляете по желанию. Документации конечно не так много, как у CI, но в принципе достаточно. Что непонятно — на форуме выясните (есть русскоязычная ветка). Есть блоги про Kohana, как на русском, так и на английском.

    Кстати, к концу года должна выйти версия 3.1, там вроде как интересности всякие добавятся.
    Ответ написан
    Комментировать
  • Муки выбора PHP-фреймворка для разработки сайта, ориентированного на мобильных пользователей

    dohlik
    @dohlik
    Интересно, при чем тут ориентированность на мобильных пользователей? Каких-то особых требований Вы не привели :)
    Ответ написан
    Комментировать