Является ли Symfony хорошей основой для изучения?

Я никогда не использовал общедоступные рамки (всегда используемые внутренние фреймворки или мои собственные). Я вижу, что у Symfony есть много учебников и хорошая документация, и, похоже, все от CRUD до нескольких языков.

Считаете ли вы, что это хорошая структура для создания веб-сайта, который сложнее, чем блог *? Если нет, то какая альтернатива?

* Веб-сайт с логином для управления финансовыми данными.

Solutions Collecting From Web of "Является ли Symfony хорошей основой для изучения?"

Symfony 2

Symfony2 рассмотрел многие проблемы с Symfony 1.

  • Это позволяет обеспечить большую гибкость при настройке проекта.

  • Это очень быстро и сопоставимо с другими веб-фреймворками

  • Propel и Doctrine поддерживаются, но не применяются. Создатель может использовать все, что захочет, в качестве ORM. Или вообще нет.

  • Некоторые из компонентов Symfony2 теперь реализуются в крупных проектах, таких как Drupal и PhpBB.

Symfony 1

Symfony 1 казался действительно хорошим, но имел несколько ограничений.

Он был отполирован и имел хорошую документацию. В этом нет ничего особенного. Казалось, что все было труднее, чем нужно.

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

  • Propel сделал сложные SQL-запросы довольно сложными. Креоль позволил вам «сконструировать» задачи в стиле OO, но писать SQL вручную было бы намного проще.

  • Существует сильное предпочтение конфигурации по коду (Symfony loves yaml). Это означает, что вам нужно будет постоянно искать какой файл конфигурации и какой параметр вам нужно изменить. Если вы придерживаетесь определения конфигурации на неправильном уровне (например, под неправильным родительским узлом), вы не узнаете, почему все не работает.

  • Документация показалась немного ориентированной на учебник. Часто мне просто нужна была действительно солидная ссылка. Это часто связано с поиском определения конфигурации.

  • Структура каркаса довольно жесткая. Вы должны реализовывать вещи точно так, как планировали дизайнеры.

  • Рамка оказалась довольно медленной. Мы пытались обрабатывать умеренный объем трафика (возможно, 50 000 уникальных файлов в день), а сервер, который мы использовали, просто не мог его принять.

Многие из этих проблем исчезнут после нескольких проектов Symfony. Если бы я искал новую структуру, я бы, вероятно, посмотрел на CodeIgnitor, это было бы намного проще и легким.

После Symfony я закончил тем, что написал очень маленькую структуру, чтобы применить шаблон MVC. Мне это очень понравилось, так как я мог разработать код рамки, чтобы соответствовать моим конкретным проблемам. Это не совсем «правильная» вещь, но это сработало для меня. Я использовал его примерно в полдюжины проектов, и я добавил и урезал свой код, чтобы он был легким.

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

Существует хорошее сообщество пользователей, у irc обычно есть полезные люди, и есть несколько плагинов, чтобы упростить простые задачи. У этого есть действительно хороший генератор администратора. ORM (Propel) является немногословным, но позволяет использовать большинство общих функций базы данных – ограничения, внешние ключи, индексы и т. Д. Объекты Form в 1.1 хороши.

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

Определенно рекомендуется.

SEEMS иметь хорошую документацию, но в деталях, когда вы пытаетесь следовать ей, это кошмар.

Взгляните на эту дискуссию, я думаю, вы можете найти полезную информацию там http://www.quora.com/Which-framework-is-best-for-beginners-in-PHP-Why Что касается меня, я не поклонник Symfony. Я предпочитаю Yii или CodeIgniter, в основном Yii из-за его простоты и приятных расширений (bootstrap, backvendor, coco и т. Д.),

@Daok

Yaml используется только в ORM для определения вашей схемы. На самом деле это не определяет никакого поведения. Propel основан на сгенерированном коде, и он использует schema.yml для создания моделей.

Он также работает на OS X.

Он также имеет довольно хороший уровень кеширования.

Мне нравится codeigniter лично, потому что его так легко кодировать и очень хорошо документировать.

Symfony не работает с PHP 4. Системы, использующие приложения, специфичные для PHP4, не смогут использовать Symfony. Если PHP4 не является требованием, symfony – очень хороший вариант.

Я не вижу сложность приложения как препятствия для принятия symfony.

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

Вероятно, не лучше всего сравнить его с Zend, Symfony – это полностью полноценная структура стека, вам нужно быть готовым к тому, чтобы делать что-то с Symfony. Я нашел, что это приятно использовать. Я бы посоветовал прочитать официальную книгу symfony (доступную в Интернете) в полном объеме, прежде чем начать. Propel (symfonys ORM) был немного разочаровывателен в изучении, но он хорошо работает, как только вы преодолеете кривую обучения.

Его действительно заполнены полезными вещами и становятся лучше, чем больше вы его используете.

Symfony – хорошая структура, которая использует те же шаблоны дизайна, которые составляют Ruby on Rails, но это не «PHP on Rails», поскольку у нее есть свои плюсы и минусы.

Начиная с Symfony 1.2 Doctrine является вторым ORM, который упакован вместе с ним. Для более старых версий есть плагины.

О всем бизнесе YAML: если вы предпочитаете файлы конфигурации XML или еще один формат файла, вы можете подключить его. YAML является стандартным.

И последнее, но не менее важное: вы можете выйти из структуры по умолчанию (все равно вам нужно ее настроить). В документации (см. Книгу Symfony) указано это явно.

В конце концов, это вопрос вкуса и личных предпочтений. Мой совет должен был прочитать книгу Symfony (вы можете получить ее бесплатно с веб-сайта проекта) и попытаться следовать примеру проекта. Если вам это нравится, используйте его. Если нет, попробуйте что-нибудь еще.

Вот некоторая информация, которую я только что нашел:

  • Конструкция с MVC
  • ORM с помощью Doctrine или Propel
  • Файлы Yaml для конфигурации
  • Работа в Linux и Windows
  • Использовать макет и шаблон

Я бы сказал, YII, пробовав все CakePHP, Zend и Symphony.

Он имеет такие функции, как MVC, DAO / ActiveRecord, кеширование, аутентификация и контроль доступа на основе ролей, строительные леса, тестирование и т. Д. Он имеет небольшой вес и имеет мощную поддержку кеширования. Безопасность является частью этой работы. Он включает проверку ввода, фильтрацию выходных данных, SQL-инъекцию и предотвращение межсайтовых сценариев. Также Yii намного быстрее, потому что использует ленивую технику загрузки. Он не позволяет использовать функциональность до тех пор, пока она не будет вызвана в первый раз. Например, он не создает объект, если объект не вызывается в первый раз. Другие фреймворки страдают от производительности, потому что они будут включать функциональность независимо от того, используется она или нет во время запроса.

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

В конце концов, это просто личное мнение, я думаю.

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

Мы используем sf на работе в течение последних 6 месяцев, и до сих пор я очень впечатлен этим. Существует довольно здоровое сообщество разработчиков плагинов, построенное вокруг него, и основная структура, похоже, развивается очень быстро. Версия 1.2, выходящая в декабре, сделает структуру официально агностикой для использования Propel или Doctrine для слоя ORM, для объявлений с большой гибкостью для конечного пользователя. Начальная кривая обучения немного крутая, так как это определенно «путь symfony», к которому вы должны привыкнуть, но, как и в случае с другими полными фреймворками стека, такими как Rails, как только вы узнаете, что все это, я считаю, что разработка довольно быстрой.

Я пробовал CakePHP, CodeIgniter, ZendFramework и Yii. У всех из них есть плюсы и минусы, но я должен признать, что я больше всего люблю Symfony, потому что он очень гибкий, вы можете выбрать только те компоненты, которые вам нужны, в отличие от других фреймворков, о которых я говорил. Ну, честно говоря, вы также можете использовать библиотеки Zend.

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

Я все еще не уверен, потому что я не вижу много проектов, которые использовали эту структуру … CakePHP и Zend выглядят более популярными, но Symfony кажется интересным …

Как отметил Гаурав, Symphony не поддерживает PHP4. Если вы ищете достойную фреймворк PHP, вы можете захотеть проверить Code Igniter.

Для альтернатив я использовал CakePHP. За последние 10 месяцев я разработал несколько приложений для приложений на уровне приложений приложений для него для внутреннего использования. Это было фантастично для этого. Легко войти, не нужен очень свежий php, документы достойны и не могут найти ответ там, который обычно был найден в списке рассылки.

Основная проблема, с которой я столкнулся с Cake, заключалась в том, что я не чувствовал, что у меня есть такой контроль над их ORM, и хотя они недавно улучшились в этой области с добавлением поддержки групповых предложений, я все еще не могу четко указать соединения. Это приводит к ситуациям, когда вы можете иметь низкую производительность, потому что orm решает, что ему нужно выполнить кучу запросов для получения данных из связанных моделей. Или вы можете использовать такие хаки, как это http://teknoid.wordpress.com/2008/07/17/forcing-an-sql-join-in-cakephp/, который работает, но это некрасиво. По мере того, как приложения начали расти, и все больше моделей было добавлено в схему, я начал все чаще сталкиваться с ситуацией, поэтому решил переключиться на что-то, что поддерживало ORM с большим количеством функций (у меня были другие исследования с тортом, но большинство были довольно незначительными). Это раздражало меня какое-то время, но я решил, что торт – отличный инструмент, просто не лучший инструмент для меня.

Я посмотрел на Зенда и Симфония в основном (я только просматривал документы CodeIgniter и смотрел скринкаст). Я закончил тем, что взял Symfony, потому что у него, казалось, был правильный баланс сил и простота использования. Он может использовать Doctrine и Propel, множество плагинов и множество документов. Я пристегнулся, чтобы разобраться с миллионами yml-файлов, которые, как я думал, мне придется редактировать, но, к моему удивлению, мне не пришлось так много настраивать. Zend выглядит довольно мощно, но кажется, что это слишком много для Do It Yourself для моих текущих проектов. Из того, что я прочитал, я также могу использовать Zend libs в моих проектах symfony без особых проблем, чтобы опечатать сделку.

Таким образом, резюме, которое вы выберете, будет зависеть от ваших потребностей. Если вы видите, что выполняете сложные запросы, вы, вероятно, должны выбрать тот, который имеет очень хорошую библиотеку баз данных или, по крайней мере, позволяет вам легко использовать альтернативный вариант, не отказываясь от тонкостей рамки (я понимаю, что CodeIgniter может использовать доктрину, например).

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

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

Буквально вы можете разработать два приложения с использованием среды zend в одно и то же время, которое вы можете использовать для разработки одного приложения на symfon2 при условии того же приложения.

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

Зенд кажется превосходным, но на самом деле недостает документации.