Your SlideShare is downloading. ×
Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Устройство фреймворка symfony 2 (http://frontend-dev.ru)

2,433
views

Published on

Презентация к вебинару об устройстве фреймворка symfony 2. …

Презентация к вебинару об устройстве фреймворка symfony 2.
Видеозапись вебинара находится в моём блоге по адресу http://frontend-dev.ru/2012/12/12/symfony2-основы

Published in: Technology

0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,433
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
19
Comments
0
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Symfony2Александр Егурцов
  • 2. Symfony2 Не просто MVC framework. Symfony – это гораздо больше. Возможность использовать компоненты независимо друг от друга Частично или полностью используется во множестве проектов Огромное сообщество Философия: не изобретай колесо Поддержка фич из PHP 5.3 2
  • 3. Composer• // composer.json• {• "name": "symfony/framework-standard-edition",• "description": "The "Symfony Standard Edition" distribution",• "autoload": {• "psr-0": { "": "src/" }• },• "require": {• "php": ">=5.3.3",• "symfony/symfony": "2.1.*",• "doctrine/orm": ">=2.2.3,<2.4-dev",• "doctrine/doctrine-bundle": "1.0.*",• "twig/extensions": "1.0.*",• "symfony/assetic-bundle": "2.1.*",• "symfony/swiftmailer-bundle": "2.1.*",• "symfony/monolog-bundle": "2.1.*",• "sensio/distribution-bundle": "2.1.*",• "sensio/framework-extra-bundle": "2.1.*",• "sensio/generator-bundle": "2.1.*",• "jms/security-extra-bundle": "1.2.*",• "jms/di-extra-bundle": "1.1.*",• },• "scripts": {• "post-install-cmd": [• "SensioBundleDistributionBundleComposerScriptHandler::buildBootstrap",• "SensioBundleDistributionBundleComposerScriptHandler::clearCache",• "SensioBundleDistributionBundleComposerScriptHandler::installAssets",• "SensioBundleDistributionBundleComposerScriptHandler::installRequirementsFile"• ],• "post-update-cmd": [• "SensioBundleDistributionBundleComposerScriptHandler::buildBootstrap",• "SensioBundleDistributionBundleComposerScriptHandler::clearCache",• "SensioBundleDistributionBundleComposerScriptHandler::installAssets",• "SensioBundleDistributionBundleComposerScriptHandler::installRequirementsFile"• ]• },• "minimum-stability": "dev",• "extra": {• "symfony-app-dir": "app",• "symfony-web-dir": "web"• }• } 3
  • 4. ComposerВозможности: Скачивать пакеты и их зависимости Не требуется установленной системы контроля версий Источник: любое место, любая структура! Поддержание библиотек в актуальном состоянии Автозагрузка 4
  • 5. ComposerУстановка:sudo curl -s https://getcomposer.org/installer | phpsudo mv composer.phar /usr/local/bin/composer 5
  • 6. Symfony2Установка:composer create-project symfony/framework-standard-edition blog.loc/ 2.1.3 - app/: Директория с настройками приложения - src/: Код проекта находится тут - vendor/: Место для хранения сторонних библиотек; - web/: Корневая директория веб- сервера. Хранилище публичных файлов 6
  • 7. Symfony2Установка:// etc/nginx/conf.d/blog.locserver { server_name blog.loc; root /var/blog.loc/web;rewrite ^/app.php/?(.*)$ /$1 permanent;location / { index app.php; try_files $uri @rewriteapp;}location @rewriteapp { rewrite ^(.*)$ /app.php/$1 last;} location ~ ^/(app|app_dev|config).php(/|$) { fastcgi_pass 127.0.0.1:9000; fastcgi_split_path_info ^(.+.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param HTTPS off; }} 7
  • 8. Symfony2Bundle:php app/console generate:bundle --namespace=Blog/BlogBundle --format=yml• Controller/ Содержит код контроллеров(например: HelloController.php);• DependencyInjection/ Содержит настройки управления зависимостями (необязательна);• Resources/config/ Настройки бандла (например: routing.yml);• Resources/views/ Хранилище шаблонов, организованных по именам контроллера (например: Hello/index.html.twig);• Resources/public/ Публичные файлы (изображения, стили, и т.д.), копируются в корневую директорию проекта web/ directory командой assets:install console command;• Tests/ Директория с тестами. 8
  • 9. Symfony2Controller:• Запрос приходит на front controller (app.php)• Ядро Symfony2 (Kernel) отправляет запрос в роутер• Запрос разбирается роутером (routing.yml). Определяется имя контроллера.• Ядро Symfony2 (Kernel) выполняет код контроллера, который обязательно возвращает объект ответа (Response) 9
  • 10. Symfony2Резюме: Для создания страницы требуется выполнить три простых шага: - создать роут - создать контроллер - создать шаблон Всё в symfony организованно в бандлы Настройки можно найти в директори Resources/config бандла Глобальные настройки находятся в директории app/config 10
  • 11. Symfony2TWIG:• Быстрый• Надёжный• Краткий• Гибкий• Лёгкий в освоении• Расширяемый• Полностью покрыт тестами• Хорошо задокументирован• Безопасный 11
  • 12. Symfony2TWIG:• Переменные {{ foo.bar }} {{ foo[bar] }}• Циклы {% for user in users %} <li>{{ user.username|e }}</li> {% endfor %}• Условия {% if users|length > 0 %} {{ user.username }} {% endif %}• Фильтры {# очищаем от html тегов #} {{ name|striptags }} {# переводим всё в верхний регистр #} {% filter upper %} This text becomes uppercase {% endfilter %}• Вложения {% include sidebar.html %}• Комментарии {# комментарии пишут так #} 12
  • 13. Symfony2Doctrine2: Создать базу данных php app/console doctrine:database:create Создать сущность php app/console doctrine:generate:entity --entity="BlogBlogBundle:Post" Сгенерировать класс php app/console doctrine:generate:entities BlogBlogBundle Сгенерировать таблицы в базе php app/console doctrine:schema:update --force 13
  • 14. Symfony2DI:# app/config/config.ymlservices: post_repository: class: BlogBlogBundleEntityPostRepository factory_service: doctrine.orm.default_entity_manager factory_method: getRepository arguments: - BlogBlogBundle:Post searcher: class: BlogBlogBundleLibSearcherSearcher arguments: [@post_repository] 14
  • 15. КонтактыЕвгений Кривошеев, ekrivosheyev@scrumtrek.ruНикита Филиппов, nfilippov@scrumtrek.ruАсхат Уразбаев, askhat@scrumtrek.ruАлександр Егурцов, egurtsov@gmail.com «Тяжело в учении – легко в бою» SkillTrek – это дистанционный центр компетенций, где специалисты получают востребованные на рынке знания и навыки в условиях реальных проектов с выбором удобной им загрузки 15