Intereting Posts

Какие рамки вы предложите для сильной расширяемой платформы?

Во-первых, позвольте мне извиниться за еще один рамочный вопрос. Но я думаю, что это отличается от обычного «Какую структуру я должен выбрать?» чтобы гарантировать это.

Вот моя ситуация: в прошлом году я использовал пользовательскую инфраструктуру. Он используется во всем: от небольших CMS до более крупных сайтов и даже средней социальной сети. Он отлично работает, но теперь я вижу его ограничения. Итак, я решил переключиться на стороннюю структуру. Более простые рамки (CI, Kohana, Cake) кажутся слишком негибкими из того, что я слышал, поэтому это привело меня к ZF. Но я также слышал, что ZF может быть слишком гибким и с этим трудно работать. Что еще более усложняет это, так это то, что я ищу одноразовое решение; Мне нужна настройка, которая работает с небольшими проектами в очень крупных проектах. Я главный разработчик, но мне нужен мой партнер, чтобы в конечном итоге научиться системе и помочь с менее сложными задачами программирования.

Я исследовал Доктрину, и мне это нравится. Поэтому я склоняюсь к Symfony (с Доктриной) в качестве основной структуры с ZF, чтобы заполнить пробелы. Кроме того, мне нужна возможность добавлять свои собственные части на эту платформу параллельно с любыми сторонними библиотеками. Надеюсь, это обеспечит мне прочную, расширяемую платформу, поскольку мы действительно не можем позволить себе отказываться от каркасов в каждом проекте.

Я ищу советы от других, которые были в той же ситуации, в которой я сейчас. Любые советы будут очень признательны.

Изменить: я опубликовал свое решение ниже в надежде помочь другим людям в той же ситуации

После некоторых исследований я решил пойти с Symfony. Вот мои причины:

  • Менее подробный, чем ZF
  • Кажется очень настраиваемым из-за использования файлов YAML (но я никогда не чувствую себя перегруженным ими)
  • Автозагрузка пользовательских классов не требует дополнительной работы, например, в ZF (хотя ее трудно настроить в ZF)
  • Панель инструментов разработчика отличная, и они добавляют в нее некоторые полезные функции в версии 1.3
  • Возможность использовать части из других фреймворков (ZF, eZComponents) заставляет меня чувствовать уверенность в том, что мне не составит труда найти то, что мне нужно
  • Поставляется в комплекте с Doctrine и очень легко настраивается (на самом деле Doctrine станет ORM по умолчанию в версии 1.3)
  • Похоже, для Symfony существует намного больше сообщества. Google «symfony tutorials» и «zend framework tutorials», и вы увидите огромную разницу в количестве результатов
  • Много документации: учебники (учебник Jobeet пока очень хорош), ссылки на API и более понятное для человека описание структуры и ее основополагающих принципов
  • Yahoo! использовал его для нескольких своих проектов – приятно видеть, что Big Name возвращается в рамки IMHO

Edit: Ради надежд помочь другим в той же ситуации, вот некоторые вещи, которые мне не нравятся в Symfony:

  • Не следует схеме именования PEAR (ZF делает)
  • Внутренние классы начинаются с «sf». Это противоречит практике капитализации первой буквы имени класса
  • Переменные и функции написаны_like_this, но классные методы – camelCased – это кажется неаккуратным для меня

Это все косметические проблемы; вещи, которые беспокоят меня, потому что я люблю делать все по- своему . Я понимаю, что всякий раз, когда вы используете стороннее программное обеспечение, вы должны быть готовы принести некоторые жертвы.

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

редактировать

Прошло уже два года с тех пор, как я опубликовал это сообщение, и поскольку он все еще попадает в хиты, я думал, что дам быстрое обновление. Я, вероятно, построил около 25-30 проектов с использованием symfony 1.x за последние 2 года, и я очень доволен тем, как он работает. Как полноценная структура MVC стека, в партнерстве с доктриной, она обрабатывала почти все, что я бросил на нее. И независимо от того, что он не мог обработать, было легко добавить собственный код. На самом деле, это то, что мне больше всего нравится в symfony – как легко его продлить. Я закончил создание кучи плагинов и поведения Doctrine, которые значительно сократили время разработки. И инструменты генератора-администратора были отправлены богом. Я по-прежнему использую symfony 1.4 для нескольких проектов здесь и там, но решил в основном сосредоточиться на использовании Symfony2. Это совершенно другой зверь, чем symfony 1, но я очень ценю его архитектуру. Что еще более важно, кажется еще проще продлить, чем symfony 1.x. Я пропустил некоторые функции 1.x, но это та святость, которую вы должны сделать при переключении фреймворков.

Мне нравится использовать ZF из-за сильных соглашений. Вы можете быть уверены, что все будет так, как вы ожидаете. Имена классов, имена функций, имена переменных, структура каталогов, … все это. Это действительно ускоряет разработку, если вы придерживаетесь ее. Если вы его адаптируете, это больше похоже на поиск собственного кода при проверке внутренних функций ZF;)

Будем честны. ZF не работает быстро. Не так быстро, как Nette, CodeIgniter и т. Д. Но разница в том, что есть класс для всего. И если этого не происходит, есть класс, который вы можете расширить или интерфейс, который вы можете реализовать.

Все остальные рамки пытаются получить эффект «вау» (блог через 30 секунд, твиттер через 2 часа и т. Д.). Но когда вы разрабатываете приложение для реальной жизни, вы понимаете, что это по своей воле, гибкая и обширная архитектура, которая вам нужна.

Zend Framework: огромный, гибкий, модульный. Я бы использовал только в том случае, если создаю крупную ультрасистему предприятия.

Но я использую Yii Framework, и мне это нравится. Потому что: очень быстро, просто, виджеты (легко использовать компонент, это очень приятно).

Yii проще использовать, потому что это не инфраструктура предприятия и все основные функции, которые вам действительно нужны в большинстве случаев.

*

EDIT: Теперь, когда я почти понимаю, КАК улучшить ZendFramework, используя свой собственный код (как задано здесь, добавив 3rd Party lib в Zend и здесь, используя 3rd Party lib в Zend ), я переключился на ZendFramework. В настоящее время я разрабатываю свое приложение и каждый день, когда работаю и тестирую что-либо с ZendFramework, он становится все более и более знакомым, и это легко ускоряет мое развитие. Мой совет: используйте ZendFramework.

*

У меня в настоящее время такая же проблема:

Моя история: я использовал CakePHP, пока не захотел расширить размер моего проекта. CakePHP был не таким гибким, как я хотел. Поэтому я попытался использовать ZendFramework.

В первый раз, когда я прочитал руководство «QuickStart», я немного боялся иметь столько файлов для простого приложения для гостевой книги.

По прошествии времени «игры» с ZendFramework я решил использовать ZF в качестве сторонней библиотеки в моей собственной пользовательской структуре.

Проблема в том, что, если вы используете компоненты MVC Zend, вам может понадобиться использовать 30% всей структуры, потому что компоненты MVC являются одной из самых больших частей ZF. Я имею в виду, если я использую ту часть рамки, ПОЧЕМУ, вы не должны использовать все остальное?

После этого я решил написать свою пользовательскую структуру COMPLETE без использования ZendFramework в качестве сторонней библиотеки lib.

Теперь я сижу перед горами бумаг, полный эскизов о дизайне кода.

Я буду держать вас в курсе моих дальнейших решений.

Я честно считаю, что это действительно зависит от вашего стиля. На этот вопрос нет конца.

ZF в значительной степени опирается на классические и проверенные принципы проектирования. Это также очень расширяемо, но требует больше «конфигурации», чем «конвенция». Я лично не доверяю стороннему кодексу по своей природе, поэтому я поклонник более многословия, ради того, чтобы быть более знакомым с технологией, с которой я работаю. Но это только я.

Я также использовал CakePHP успешно и две другие структуры, принадлежащие компании, с которой я работал с большим успехом. Они все пытаются делать подобные вещи, просто выбирают то, что вам лучше всего подходит.

Я лично использовал CakePHP для больших и малых проектов, однако часто бывает сложно сделать это так, как вы хотите. Мои причины использования Cake по-прежнему связаны с тем, что поддержка сообщества на самом деле важна, часто возникают обновления безопасности, и они не заставляют вас мета-пакеты (например, модульное тестирование) (хотя это в комплекте, вы можете просто bin, если вы не заинтересованы в использовании встроенного пакета).

В целом, за последние несколько месяцев он стал для меня приятной системой, однако я снова и снова слышал, что Симфония фантастична, поэтому вы можете быть на деньги своими мыслями. С поддержкой NetBeans для Symphony в конвейере я также могу найти необходимость переключиться в ближайшее время.