ZFCore – CMF на Zend Frameworkе


Представляю на суд общественности наработку моего отдела – CMF система на базе Zend Framework’а…

Преследуемые цели

Основная задача, решаемая данным проектом – ускорение разработки приложений для экономии времени, и повышения конкурентоспособности на фоне аналогичных предложений по разработке кастомных web-приложений.

Для любителей метафор
Представьте, что вам необходимо построить дом, а перед вами лишь лес, и надо начинать с самого начала – выкорчевывать деревья, выравнивать площадь, завозить стройматериалы и т.д. ZFCore – это подготовленная стройплощадка, все материалы привезены и разгружены, и можно приступать к работе.

Фичи проекта

Что же включает данный полуфабрикат:

Система:

  • максимальное количество опций вынесено в application.ini
  • настраиваемый через конфигурационный файл ACL (глобальный и для каждого модуля)
  • настраиваемая через конфигурационный файл навигация (глобальный и для каждого модуля)
  • настраиваемые через конфигурационный файл роуты (глобальный и для каждого модуля)

Пользовательская часть:

  • пользователи – регистрация/авторизация/активация – переделка формы регистрации не будет занимать больше одного дня (экономия времени 16-24 чч)
  • статические страницы – останется лишь слегка изменить внешний дизайн (~4-8 чч)
  • навигация, карта сайта и sitemap.xml (~4-8 чч)

Администрирование:

  • приемлемый дизайн в едином стиле (~4-8 чч)
  • управление пользователями (~12-16 чч)
  • управление статическими страницами (включая аплоад картинок) (~12-16 чч)
  • управление почтовыми уведомлениями (~12-16 чч)

В процессе разработки

  • Модуль Feedback (ContactUs если так больше будет понятно) (~12-16 чч)
  • Модуль блог/форум – отличаются они лишь представлением (~24-32 чч)

Данный функционал присутствует практически в каждом проекте, как результат – экономия времени разработки составит около 96 часов (плюс тестирование и менеджмент).

Примочки

  • Практически всё можно настроить/подключить из application.ini
  • Модули пишутся как можно более независимыми
  • Миграции БД
  • Action_Scaffold – не кодогенератор, но тоже удобно
  • Админка построена с использованием DojoToolkit и Zend_Dojo_Form
  • Стараемся покрывать код тестами

Связка Action_Scaffold + Zend_Dojo_Form дает вполне юзабельную админку:

Насчет покрытия кода – думаю, статистика покрытия будет более наглядной…

Покрытие application

Покрытие library

Заморочки

  • Миграции пока захардкождены под мускуль, адаптеры в пути
  • Модели еще не разнесены по модулям
  • Директория application должна лежать выше нежели document_root сервера, а public и должен быть этим самым рутом
  • Инсталляции нет как таковой
  • Dojo build скрипт еще не написан, так что пока используем как есть

Попробовать на зуб

На демо можно взглянуть на нашем тестовом сервере: http://zfcore.head.php.nixsolutions.com/.

Скачать можно единым архивом с code-google – https://code.google.com/archive/p/zfcore/downloads, или таки взять “свежак” с SVN репозитория:

svn checkout http://zfcore.googlecode.com/svn/trunk/ zfcore-read-only

Пожелания и замечания принимаются в багтрекере.

Другие Open Source проекты

Для любознательных, советую так же покопаться в коде следующих систем:

  • Magento eCommerce – мощнейший электронный магазин, разработка отечественного производителя
  • Digitalus CMS – неплохо выглядет снаружи
  • Digitalus Framework Core – тоже фреймворк, без особой активности (репозиторий)
  • CAHAYA CMS – слишком много “Not yet implemented”
  • Open source job board – доска объявлений о работе
  • >MYAK-CMS – еще один проект от соотечественника
  • CultSoft Engine – еще одна CMS и тоже наши

Думаю стоит так же упомянуть различные кодо-генераторы для проектов на базе Zend Framework’а (scaffold):

  • easyphpapp – строим CRUD (Create Read Update Delete) для Zend Framework
  • Zenerator – генератор классов для работы с БД
  • GEckoToolbox – формы и грид
  • Zend Framework data grid – датагрид для Zend_DB_TAble
  • ZFDatagrid – для полного раскрытия темы гридов

28 thoughts on “ZFCore – CMF на Zend Frameworkе”

  1. Посмотрел в код – местами очень спорно…
    Но идея очень правильная!

    1. Сделаны они на коленке, расчитаны на использование с Zend_Tool, с поставленной задачей – версионность БД вроде как справляются, естественно их нуно порефакторить, т.к. текущий вид – это лишь набросок…

  2. Так как CultSoft Engine, упомянутый в списке, делал я, то поделюсь некоторыми соображениями.

    Во-первых, проект забросил, но зато получил определённый опыт в объектном проектировании систем, внедрил динамические gettes и setters для свойств Zend Db Table Row, пострил основу для модульного приложения со всеми традиционно необходимыми компонентами.
    Во-вторых, устроился в компанию Varien и теперь работаю над магазинами на Magento.
    В третьих, отдельные компоненты Zend Framework весьма эффективны и удобны, но общая его тяжеловесность и непомерные амбиции – ахиллесова пята приложений.

    В целом ZF я разочарован. И рекомендую решения попроще.

  3. Загрузка картинок в админке не работает.

    В общем для начала нормально, но несеръёзно пока что.

  4. Кстати на счет названия, в лицензии есть вот такое:

    Neither the name of Zend Technologies USA, Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

    Так что наверное не стоит называть проект “Zend Framework Core”.

  5. поковыряю.. не исключено понатырю вкусняшек )

  6. Разве Magento – это наш производитель?
    Про eCart знаю, а Magento разве тоже?

  7. Спасибо за проект. Но зачем сам ZF пихать внутрь проекта?

  8. В ответ на вопрос moorcock и тем, кто ещё не в курсе: да, Magento написана силами только лишь украинских программистов. Почитайте интервью на досуге. Веб-дизайн, маркетинг и продвижение в массы делается в основном в США, а вот кодится всё здесь.

    1. Dmitriy, у меня к Вам вопрос как к опытному пользователю. Какую альтернативу ZF Вы можете посоветовать?

      1. Это зависит от критичных для вас критериев.

      2. Любой фреймворк – лишь инструмент для решения задач. Однако, как и в любой другой сфере, появляется мода на определённые решения и их адепты потом защищают с пеной у рта. Плюс хороший, агрессивный маркетинг и бренд, как в случае Zend Framework.

        Реальность такова, что конечному потребителю абсолютно всё равно как написан продукт, лишь бы не доставали проблемы с багами, нелогичностью в управлении и с производительностью системы. И вот тут-то большие, комплексные фреймворки дают слабину, ради удобства программиста железных ресурсов потребуется значительно больше. А лёгкие решения, которые, возможно, лучше всего бы подошли для клиента (имею в виду Yii, Kohana и подобные), выглядят в глазах тру-проггера недостаточно развитыми и крутыми.

  9. С MYAK-CMS сложилась какая-то детективная история. Автор 26 января объявил о прекращении разработки в связи с переходом на Drupal. Но в настоящее время это объявление из блога исчезло. Даже не знаю что и думать…

      1. Да не, просто внезапно всплывший интерес в соответствующей гуглогруппе прибавил энтузиазма.

  10. У меня есть двое(!) знакомых, которые тоже пишут свои CMF/CMS на базе Zend Framework. Что-то в последнее время все стукнулись на этом ZF.

    А я вот перешел на Yii, там сам каркас приложения получается намного проще и продуманней + ничего не мешает использовать полезные зендовские компонены.

  11. Как организовать проект на ZF с использованием модулей????
    У вас в проекте используются модулю и они работают.
    Я сколько ни пытался не получается.

  12. Здравствуйте, можно ли установить ZFcore на Denwer в Windows? Меня смущают симлинки…

    1. Симлинки используются лишь для вынесения директории application из document_root web-севера, эту же операцию можно выполнить при помощи конфигурации апача — необходимо указать директорию public как document root

  13. Антон, спасибо большое за твой труд и идеи.
    Документация ZF конечно вещь незаменимая, но понять ZF с наглядными примерами я смог благодаря этому сайту и проекту ZFCore в частности.
    Да, и твои статьи по Dojo – просто отличные. Хотелось бы побольше статей в этом направлении.
    В общем Спасибо огромное и с Уважением :)

  14. Хотел использовать на небольшом сайте, столкнулся с проблемами, и, увы, не получилось.
    Что не понравилось:
    1.регулярки wysiwyg не дружат с кириллицей.
    2.Класс для работы с картинками сам в себе(из аплоад менеджера).Нужно было сделать аплоад изображений с ресайзом и тамбами определенного размера, в определенную папочку ). Не помню уже, что меня смутило, но переделывать пришлось его сильно под себя.
    3.ACL в виде xml файлов. Не всегда нужна такая строгость в описании ролей, а тут для каждого модуля требуется заполнять XML, опечатка – нифига не работает. То есть есди делаешь мелкий сайт и используешь CMS для экономии времени, то заполнение XML тот момент, который его отнимает.
    4.Не реализованы очень нужные модули: каталог и новости
    5.Локализация. Как же так: половина на русском, половина на английском… По сути это означает, что сайт на данной CMS нельзя продать. Клиент, увидев такую админку, скажет: “”№;?”!:!%”

    Что понравилось:
    1.Понятная архитектура, никуда не приходилось лазить кроме папок модулей(писать плагины и т.д).
    2.Удобная админка.
    3.Искал что-то подобное: гибкое, аккуратное и не перегруженное функционалом, чтобы сэкономить время на написании базового функционала.

  15. а что думаете о pimcore? его в списке нету, но я когда проводил поиск ЦМС на Зенде, нашел кроме Маженто из живіх и вменяеміх только его.
    http://www.pimcore.org/

Comments are closed.