Устройство фреймворка symfony 2 ()
Post on 16-Jun-2015
2.581 Views
Preview:
DESCRIPTION
TRANSCRIPT
Symfony2 Александр Егурцов
Symfony2
Не просто MVC framework. Symfony – это гораздо больше.
Возможность использовать компоненты независимо друг от друга
Частично или полностью используется во множестве проектов
Огромное сообщество
Философия: не изобретай колесо
Поддержка фич из PHP 5.3
2
Composer
3
• // 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": [ • "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", • "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", • "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", • "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile" • ], • "post-update-cmd": [ • "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", • "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", • "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", • "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile" • ] • }, • "minimum-stability": "dev", • "extra": { • "symfony-app-dir": "app", • "symfony-web-dir": "web" • } • }
Composer
Скачивать пакеты и их зависимости
Не требуется установленной системы контроля версий
Источник: любое место, любая структура!
Поддержание библиотек в актуальном состоянии
Автозагрузка
4
Возможности:
Composer
sudo curl -s https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
5
Установка:
Symfony2
composer create-project symfony/framework-standard-edition blog.loc/ 2.1.3
6
Установка:
- app/: Директория с настройками приложения - src/: Код проекта находится тут - vendor/: Место для хранения сторонних библиотек; - web/: Корневая директория веб-сервера. Хранилище публичных файлов
Symfony2
// etc/nginx/conf.d/blog.loc server { 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
Установка:
Symfony2
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
Bundle:
Symfony2
• Запрос приходит на front controller (app.php)
• Ядро Symfony2 (Kernel) отправляет запрос в роутер
• Запрос разбирается роутером (routing.yml). Определяется имя контроллера.
• Ядро Symfony2 (Kernel) выполняет код контроллера, который обязательно возвращает объект ответа (Response)
9
Controller:
Symfony2
Для создания страницы требуется выполнить три простых шага: - создать роут - создать контроллер - создать шаблон
Всё в symfony организованно в бандлы
Настройки можно найти в директори Resources/config бандла
Глобальные настройки находятся в директории app/config
10
Резюме:
Symfony2
• Быстрый
• Надёжный
• Краткий
• Гибкий
• Лёгкий в освоении
• Расширяемый
• Полностью покрыт тестами
• Хорошо задокументирован
• Безопасный
11
TWIG:
Symfony2
• Переменные {{ 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
TWIG:
Symfony2
Создать базу данных
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
Doctrine2:
Symfony2
# app/config/config.yml services: post_repository: class: Blog\BlogBundle\Entity\PostRepository factory_service: doctrine.orm.default_entity_manager factory_method: getRepository arguments: - BlogBlogBundle:Post searcher: class: Blog\BlogBundle\Lib\Searcher\Searcher arguments: [@post_repository]
14
DI:
15
Контакты
Евгений Кривошеев, ekrivosheyev@scrumtrek.ru Никита Филиппов, nfilippov@scrumtrek.ru Асхат Уразбаев, askhat@scrumtrek.ru
Александр Егурцов, egurtsov@gmail.com
«Тяжело в учении – легко в бою»
SkillTrek – это дистанционный центр компетенций, где специалисты получают востребованные на рынке знания и навыки в условиях реальных проектов с выбором удобной им загрузки
top related