Устройство фреймворка symfony 2 ()

15
Symfony2 Александр Егурцов

Upload: -

Post on 16-Jun-2015

2.577 views

Category:

Technology


2 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Устройство фреймворка symfony 2 ()

Symfony2 Александр Егурцов

Page 2: Устройство фреймворка symfony 2 ()

Symfony2

Не просто MVC framework. Symfony – это гораздо больше.

Возможность использовать компоненты независимо друг от друга

Частично или полностью используется во множестве проектов

Огромное сообщество

Философия: не изобретай колесо

Поддержка фич из PHP 5.3

2

Page 3: Устройство фреймворка symfony 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" • } • }

Page 4: Устройство фреймворка symfony 2 ()

Composer

Скачивать пакеты и их зависимости

Не требуется установленной системы контроля версий

Источник: любое место, любая структура!

Поддержание библиотек в актуальном состоянии

Автозагрузка

4

Возможности:

Page 5: Устройство фреймворка symfony 2 ()

Composer

sudo curl -s https://getcomposer.org/installer | php

sudo mv composer.phar /usr/local/bin/composer

5

Установка:

Page 6: Устройство фреймворка symfony 2 ()

Symfony2

composer create-project symfony/framework-standard-edition blog.loc/ 2.1.3

6

Установка:

- app/: Директория с настройками приложения - src/: Код проекта находится тут - vendor/: Место для хранения сторонних библиотек; - web/: Корневая директория веб-сервера. Хранилище публичных файлов

Page 7: Устройство фреймворка symfony 2 ()

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

Установка:

Page 8: Устройство фреймворка symfony 2 ()

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:

Page 9: Устройство фреймворка symfony 2 ()

Symfony2

• Запрос приходит на front controller (app.php)

• Ядро Symfony2 (Kernel) отправляет запрос в роутер

• Запрос разбирается роутером (routing.yml). Определяется имя контроллера.

• Ядро Symfony2 (Kernel) выполняет код контроллера, который обязательно возвращает объект ответа (Response)

9

Controller:

Page 10: Устройство фреймворка symfony 2 ()

Symfony2

Для создания страницы требуется выполнить три простых шага: - создать роут - создать контроллер - создать шаблон

Всё в symfony организованно в бандлы

Настройки можно найти в директори Resources/config бандла

Глобальные настройки находятся в директории app/config

10

Резюме:

Page 11: Устройство фреймворка symfony 2 ()

Symfony2

• Быстрый

• Надёжный

• Краткий

• Гибкий

• Лёгкий в освоении

• Расширяемый

• Полностью покрыт тестами

• Хорошо задокументирован

• Безопасный

11

TWIG:

Page 12: Устройство фреймворка symfony 2 ()

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:

Page 13: Устройство фреймворка symfony 2 ()

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:

Page 14: Устройство фреймворка symfony 2 ()

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:

Page 15: Устройство фреймворка symfony 2 ()

15

Контакты

Евгений Кривошеев, [email protected] Никита Филиппов, [email protected] Асхат Уразбаев, [email protected]

Александр Егурцов, [email protected]

«Тяжело в учении – легко в бою»

SkillTrek – это дистанционный центр компетенций, где специалисты получают востребованные на рынке знания и навыки в условиях реальных проектов с выбором удобной им загрузки