Меню Закрыть

Symphony framework на русском

Содержание

Symfony
Тип каркас веб-приложений
Автор Fabien Potencier
Разработчики Sensio Labs, Сообщество
Написана на PHP[1]
Операционная система кроссплатформенность
Первый выпуск 22 октября2005
Последняя версия
  • 5.0.2 ( 19 декабря2019 ) [2]
Лицензия лицензия MIT[3]
Сайт symfony.com​ (англ.)
Медиафайлы на Викискладе

Symfony предлагает быструю разработку и управление веб-приложениями, позволяет легко решать рутинные задачи веб-программиста. Работает только с PHP 5 и выше. Имеет поддержку множества баз данных (MySQL, PostgreSQL, SQLite или любая другая PDO-совместимая СУБД). Информация о реляционной базе данных в проекте должна быть связана с объектной моделью. Это можно сделать при помощи ORM инструмента. Symfony поставляется с двумя из них: Propel и Doctrine.

Symfony бесплатен и публикуется под лицензией MIT.

Проект спонсируется французской компанией Sensio.

Содержание

Проекты, созданные с использованием Symfony [ править | править код ]

Symfony используется в основе множества проектов [4] , в том числе сервиса социальных закладок Delicious [5] . В феврале 2009 года Dailymotion частично стал использовать Symfony; в настоящее время продолжается работа над окончательным переходом на этот каркас. Следующая версия форумного движка phpbb будет написана с использованием Symfony2 [6] .

Восьмая версия одной из самых популярных CMS — Drupal, написана с использованием Symfony2 [7] .

Также переход на Symfony2 осуществляет CMS eZ Publish

Symfony framework

Автор: Александр Степанов

5 февр. 2013 г. 5351

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

Введение

Сразу хочу отметить, что статья не тянет на учебное пособие или руководсво для новичков в PHP, потому что фреймворк досточно сложный, но интересный (: Как говориться, путь осилит идущий.

Что же нам дает использование symfony?

Тут представлены основные возможности фреймворка, все их перечислять не имеет смысла, т.к. их очень много 🙂

  1. MVC архитектура WIKI page
  2. ORM Propel
  3. Специальные средства, упрощающие создание шаблонов страниц
  4. Управление многоуровневым кэшем (например, можно кэшировать разные части View)
  5. Наличие development и production среды (development/production environment). Причем их может быть несколько. Вы можете определить свою среду, несколько баз данных, настройки кеширования и др.
  6. Scaffolding — автоматически генерируемый модуль для управления содержимым таблицы из базы данных
  7. Человеко-Понятные URL (ЧПУ)
  8. Многоязычность (i18n) (языковый файлы храняться в xml файлах)
  9. Поддержка AJAX (по дефолту Propotype)
  10. Мне еще пондравилась дебаг панель, очень удобно просматривать запросы. Сейчас такие панели уже есть в большинстве фреймворков.

Из минусов можно заметить это достаточно долгое генерирование страниц при разработке, досточно большое потребление оперативы

оно и понятно, потому что при генерации подключаются ВСЕ классы, даже те которые может даже и не понадобятся на проекте.

+ сам вес фреймворка не редко приближается к достаточно большим размерам.

Вы можете сказать, типо «это же PHP, что тут требуется особый софт?». Конечно, нет. Можно открывать файлы даже тем же блокнотом, но тогда ваша работа не будет продуктивной. Лучше всего использовать специализированные IDE, которые помогут лучше работать с проектом, да и это правильно имхо. Я рекомендую: 1. Zend studio for eclipce + symfony plugin 2. Eclipce c плагином для symfony 3. PHPEdit еще одна IDE c поддежкой симфони. С последней я познакомился относительно недавно, но юзаю попрежнему Zend studio for eclipce.

А если ли уже готовые CMS на symfony?

Да, есть! Проекто этот называется SteerCMS. В CMS уже идет куча модулей, есть несколько собственных шаблонов для сайта. Админка чем то напоминает знаменитый WordPress. Хороший проект, но видимо разработчики его зарбосили, к сожелению. Эту CMS не комендуется использовать для реальных проектов или самому доводить в более мение работоспособное состояние. У меня эта CMS завелась со второго раза)

Читайте также:  Kaspersky free лицензионное соглашение

Установка Symfony

Самый простой способ — использовать пакет PEAR. Сразу замечу, что это не очень хороший способ, так как можно легко запутаться и так не установить фреймворк. Если кто хочет всеже попробовать пойти этим путем рекомендую почитать эту заметку. Symfony — PHP5 MVC Фреймворк Там довольно хорошо описана установка symfony как и из PEAR так и из Sandbox.но мы же не ищем легких путей?)

Дальше описывает начало проекта и основные конфигурационные файлы. Описание БОЛЬШЕЙ частью взято с офф сайта, т.к. нет смысла придумывать велосипед.

Более подробное описание читайте на офф сайте:

Переведено далеко не все, но для создание простого сайта этого хватит с лихвой. Дерзайте.

Установка проекта

В symfony приложения имеющие общие модели данных выносятся в проекты. В проекте «askeet» будет реализованы backend(админка) и frontend(сам сайт) — это 2 приложения. Проект является основой приложений и должен быть создан первым. Всё что вам нужно это папка проекта и коммандная строка:

Пора создать frontend для symfony:

Конфигурация приложения

Главная часть настроек это настройки приложения. Основные константы определены в фронт-контроллере (он находится в директории web/), опции для файлов интернационализации содержатся в YAML файлах директории i18n/, остальные настройки — в директории config/. Также дополнительные, скрытые, но полезные для приложения настройки, заданы в файлах фреймворка.

Настройки фронт-контроллера

Самые главные настройки приложения находятся в фронт-контроллере; это первый скрипт, который выполняется при запросе (request). Взгляните на стандартный web/index.php

После задания имени приложения (myapp) и среды (prod), но до передачи обработки запроса дальше, вызывается основной конфигурационный файл, в котором заданы несколько полезных констант:

  • SF_ROOT_DIR: Корневая директория проекта (Этот параметр обычно должен равняться значению по умолчанию, если вы не хотите менять файловую структуру).
  • SF_APP: Имя приложения в проекте. Необходимо для составления путей.
  • SF_ENVIRONMENT: Название среды (environment). Может быть prod, dev, или любым другим, заданным вами. Этот параметр определяет, какой набор настроек нужно использовать.
  • SF_DEBUG: Опция активирующая режим отладки (debug mode).

Только файлы и скрипты из веб директории (в symfony это папка web/) доступны извне. Там находятся скрипты фронт-контроллеров, изображения, таблицы стилей, и яваскрипты. Все остальные файлы не должны находиться в веб директории — это значит, что они могут находиться в любом другом месте. Фронт-контроллер обращается к ненаходящимся в свободном доступе файлам через путь SF_ROOT_DIR. Традиционно, корневая директория находится уровнем выше от директории web/. Но вы можете выбрать совершенно другую структуру. Представим, что файловая структура состоит из двух директорий, одна с открытым доступом и другая с закрытым:

В этом случае symfony/ — корневая директория. Поэтому в фронт-контроллере index.php параметр SF_ROOT_DIR задан следующим образом:

Основные настройки приложения

Основные настройки приложения находятся в файлах директории

  • app.yml: Этот файл содержит настройки специфические для данного приложения; это глобальные переменные, используемые в бизнес логике и логике приложения, которые нет нужды хранить в базе данных. В этом файле часто хранятся налоговые ставки, цены на доставку, e-mail адреса. По умолчанию он пустой.
  • config.php: Этот файл отвечает за начальную загрузку приложения, это означает, что в нем происходят все основные инициализации необходимые для начала работы приложения. Тут вы можете изменять файловую структуру, или добавить специфические для данного приложения константы. В начале файла подключается (include) config.php проекта.
  • factories.yml: Symfony предоставляет свои собственные классы для обработки view, запроса (request), ответа (response), сессии (session), и т. д. Если вы желаете использовать свои собственные классы, то нужно определить их в этом файле.
  • filters.yml: Фильтры это куски кода, выполняемые при каждом запросе (request). В этом файле можно задать какие фильтры необходимо использовать. Эти настройки могут быть перезаданы на уровне модуля.
  • logging.yml: В этом файле можно задать уровень детализации для журналов событий (log), чтоб облегчить управление приложением и отладку.
  • routing.yml: Здесь хранятся правила роутинга, благодаря которым обеспечивается трансформация нечитаемых и неудобных для добавления в закладки (unbookmarkable) URL в говорящие сами за себя ЧПУ(человеко-понятные-урл) адреса. В новом приложении по умолчанию существует несколько правил.
  • settings.yml: Основные настройки приложения symfony содержатся в этом файле. Тут вы можете задать многоязычно приложение или нет, язык используемый по умолчанию, время ожидания запроса (request timeout), включен ли кэш. Изменением одной строки вы можете прекратить работу приложения, чтоб заняться технической поддержкой или обновить (upgrade) какой-то компонент.
  • view.yml: Структура view по умолчанию (имя главного шаблона (layout), заголовок (title), теги meta; стандартные таблицы стилей и подключаемые яваскрипты; тип контента по умолчанию, и т. д.) задаются в этом файле. Тут также определяются значения по умолчанию для тегов title и meta. Эти установки могут быть перезаданы для каждого модуля.
  • i18n.yml в директории приложения config/: Этот файл задает основные опции перевода, такие как, используемая по умолчанию для перевода культура (default culture), хранятся переводы в базе данных или в файлах.
  • Файлы переводов в директории приложения i18n/: Это в основном словари, которые предоставляют перевод для каждой фразы, используемой в шаблонах приложения. С помощью них на страничке выводится переведенный текст при переключении языка.
Читайте также:  Тонометр ub 201 отзывы

Дополнительные настройки приложения

Еще один набор конфигурационных файлов находится в установочной директории symfony ($sf_symfony_data_dir/config/). Находящейся в них опции либо определены по умолчанию, и потребность изменять их возникает редко, либо общие для всех проектов. Однако, если вы пожелайте изменить эти настройки, просто создайте пустой файл с таким же именем в вашей директории myproject/apps/myapp/config/ и перезадайте в нем нужные опции. Заданные на уровне приложения настройки имеют больший приоритет, чем настройки определенные в фреймворке. Вот список конфигурационных файлов директории config/ фреймворка:

  • autoload.yml: Файл содержит опции автоподключения. Эта возможность позволит не подключать пользовательские классы в вашем коде, если они находятся в специальных директориях.
  • constants.php: Этот файл задает файловую структуру приложения по умолчанию. Чтоб перезадать ее, используйте config.php приложения.
  • core_compile.yml и bootstrap_compile.yml: Это списки классов, которые нужно подключить для запуска приложения (bootstrap_compile.yml) и для обработки запроса (core_compile.yml). В действительности, эти файлы объединены в один оптимизированный PHP файл без комментариев, который ускоряет работу, минимизируя количество операций доступа к файлу. Это в особенности удобно, если вы не используйте PHP акселератор.
  • config_handlers.yml: Тут вы можете поменять обработчик (handler) для каждого конфигурационного файла.
  • php.yml: Этот файл проверяет правильно ли заданы переменные php.ini и также позволяет перезадать их, если это необходимо.

Настройки модуля

По умолчанию модуль не имеет собственных настроек. Но, если возникнет необходимость, вы можете перезадать некоторые опции приложения для данного модуля. К примеру, можно переопределить параметры используемые в HTML только для всех действий (action) данного модуля, или подключить какой-то специфический яваскрипт. Вы также можете задать новые параметры, доступные только в данном модуле, таким образом обеспечив инкапсуляцию. Как вы уже наверное догадались, настройки модуля содержатся в директории

Вот список файлов:

  • generator.yml: Этот файл нужен для сгенерированных на основе таблицы базы данных модулей. Тут определяется, как будут отображаться строки и поля, какие действия будут доступны пользователю (фильтры, сортировка, кнопки, и т. д.).
  • module.yml: Тут содержатся пользовательские параметры индивидуальные для данного модуля (эквивалент app.yml, но на уровне модуля) и некоторые настройки действия (action).
  • security.yml: Файл определяет ограничения доступа. Тут можно разрешить доступ к модулю только для зарегистрированных пользователей или для какой-то подгруппы зарегистрированных пользователей, имеющих специальные права.
  • view.yml: Настройки view хранятся здесь. Они могут быть заданы как для всех действий (action), так и индивидуально для каждого. Как обычно, эти опции имеют больший приоритет, чем опции заданные во view.yml приложения.
  • Файлы валидации данных: Несмотря на то, что они находятся в директории validate/, а не в config/, это тоже часть конфигурации модуля. Эти файлы используются для контроля над вводимыми через формы данными.
Читайте также:  Как подключить android к компьютеру через usb

В большинстве случаев вам не понадобится менять настройки, поскольку опции по умолчанию соответствуют наиболее распространенным требованиям. Каждый файл соответствует какой-то конкретной возможности. Когда вы будете рассматривать один файл, вы четко увидите что он делает и как он организован. Для профессиональной веб разработки, настройки по умолчанию могут оказаться не совсем подходящими. Конфигурационные файлы позволяют легко изменять поведение механизмов symfony. Представьте сколько PHP кода необходимо чтоб достичь аналогичных возможностей контроля. Если все настройки были бы собраны в одном файле, файл не только был бы совершенно не читаемым, но и переопределить настройки на нескольких уровнях иерархии (проект/приложение/модуль) было бы невозможным. Конфигурационная система это одна из сильных сторон symfony. Благодаря ей на symfony можно создать почти любые веб приложения, а не только те для которых фреймворк изначально создавался.

Режимы (environments)

В процессе разработки вам может понадобиться использовать несколько конфигураций. Например, для тестирования приложения во время разработки нужно задать одни настройки подключения к базе данных, а для подключения к реальной базе данных проекта — другие. Symfony предоставляет режимы (environment) чтоб обеспечить возможность использовать различные наборы настроек.

Environment — среда, режим Production environment (prod) — рабочая среда, рабочий режим, режим prod Development environment (dev) — среда разработки, режим разработки, режим dev Test environment (test)— среда тестирования, режим тестирования, режим test

По существу режим (environment) и конфигурация это синонимы. Например, в тестовом режиме в журнал событий заносится предупреждения (alert) и ошибки (error), а в рабочем режиме только ошибки. Зачастую в режиме разработки кэш не активирован, но в рабочем режиме и режиме тестирования кэш работает. Для режимов dev и test могут понадобиться тестовые данные, которые хранятся в базе отдельно от реальных данных, используемых в рабочем (prod) режиме. Поэтому и настройки базы данных для разных режимов будут разные. Все режимы (environment) могут находиться на одной машине, хотя на реальном сервере (production server) обычно содержится только рабочий режим (prod).

Установка веб-сервиса

Каждый разработчик настраивает свой web сервер под себя, тут можно лишь дать общие советы. Общее руководство можно почитать на офф сайте симфони: День 1: Начало проекта Откуда взята львиная доля материала для этой статьи.

Быстрый старт¶

Начало работы с Symfony¶

Разделы¶

Лучшие практики¶

Читать официальные лучшие практики Symfony.

Компоненты Symfony¶

Читать документацию по Компонентам Symfony.

Справочные документы¶

Получите ответы на ваши вопросы с этими справочными документами:

Configuration Options

Ever wondered what configuration options you have available to you in config/packages/*.yaml files? In this section, all the available configuration is broken down by the key (e.g. framework ) that defines each possible section of your Symfony configuration.

Forms and Validation

Other Areas

Примите участие¶

Сделайте свой вклад в Symfony:

  • Code of Conduct
  • Code of Conduct
  • Reporting Guidelines
  • CARE Team
  • Code of Conduct: Concrete Example Document
  • Code
    • Bugs
    • Pull Requests
    • Reviewing Issues and Pull Requests
    • Maintenance
    • The Core Team
    • Security
    • Tests
    • Backward Compatibility
    • Coding Standards
    • Code Conventions
    • Git
    • License
    • Documentation
      • Overview
      • Format
      • Documentation Standards
      • License
      • Community
        • Release Process
        • Respectful Review comments
        • Community Reviews
        • Diversity
          • Governance
          • Создайте свой фреймворк¶

            Хотите создать свой фреймворк основанный на Symfony?

            Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.

            Рекомендуем к прочтению

            Добавить комментарий

            Ваш адрес email не будет опубликован.