SlideShare una empresa de Scribd logo
1 de 24
Symfony
     v. 1.4

Архитектура и применение


Докладчик:
Полоротов Александр
Что это?
 SYMFONY – это ОО framework
  написанный на PHP5
 Основатель проекта Фабьен Потенсьер
 Разработан компанией Sensio Lab
Преимущества
 Встроенная   система кэширования
 ORM
 Генерируемый  CRUD
 Расширяемость
 Хорошая документация
 Многоязычность (i18n)
 И еще много много плюшек
FRAMEWORK
 Framework – это платформа, на
  которой работает ваше приложение.
 Framework – это инструмент

                    НО
 Framework   не делает всѐ за вас! (вот
 блин )
ЗАЧЕМ?
 Сокращает  время разработки (начиная
 с 3-4 проекта)

 Позволяет
         сосредоточиться на
 реализации конкретной задачи

 Облегчает   работу в команде
ШАБЛОНЫ ПРОЕКТИРОВАНИЯ
 Шаблон  проектирования (design
 pattern) — повторимая архитектурная
 конструкция, представляющая собой
 решение проблемы проектирования в
 рамках некоторого часто
 возникающего контекста.
ШАБЛОНЫ ПРОЕКТИРОВАНИЯ
      В SYMFONY
 ACTIVE     RECORD (Активная запись)

 OBSERVER     (Наблюдатель)

 MVC


И   Т. Д.
MVC
ACTIVE RECORD
SYMFONY
 ORM
    Active Record
    Data Mapper


 DependencyInjection (Внедрение
 зависимостей)
ORM
Пример
ORM

                    Темы

id       Title         Description    Section_id
1        Первая тема Symfony          1


                    Разделы
    id      Title             Description
    1       Фреймворки        О фреймворках
class Theme () {
      public int Id;
      public String title;
      public String description;
      public Int section_id;
      public Section section;
}

class Section () {
      public int Id;
      public String title;
      public String description;
}
Пример
$query = ―INSERT (title,description )INTO theme
VALUES (―Тема 2‖, ―Про плюшечки‖);
mysql_query($query);


$theme = new Theme();
$theme->setTitle(―Title‖);
$theme->setDescription(―Про плюшечки‖);
$theme->save();

     Операции с объектами автоматически
           переводятся в запросы!
SYMFONY
            COMPONENTS
 EVENT   DISPATCHER

 FORM    FRAMEWORK

 DOCTRINE   / PROPEL
FORM FRAMEWORK
Структура
FORM

   Форма

Поле 1   Поле 2
Поле


Widget       Validator


         Formatter
FORM
 Widget – отображение (визуальный
  элемент)
 Formatter – формат вывода widget‘a
 Validator – проверка данных
    POSTvalidator
    PREvalidator
Обработка форм
         PHP (голый  )                       SYMFONY

<?php                            <?php
                                 $form = new myForm();
 IF ( $_GET[‗name‘] != null &&   $form->bind($_GET);
strlen($_GET[‗name‘] )> 5)
  {                              If ($form->isValid())
    echo ―Form is valid!‖;           echo ―From is valid!‖;
   }

?>
EVENT DISPATCHER
EVENT DISPATCHER
 Используй то, что есть под рукой.
 Осознай, что это полный отстой.
 Напиши свое.
 Подожди, пока кто-то выпустит меньший
  отстой.
 Забрось свое.
 Используй чужое.
 (с) Пол Ломакс
ВОПРОСЫ?
@shatzibitten

Más contenido relacionado

La actualidad más candente

C++ Базовый. Занятие 03.
C++ Базовый. Занятие 03.C++ Базовый. Занятие 03.
C++ Базовый. Занятие 03.Igor Shkulipa
 
введение в паскаль
введение в паскальвведение в паскаль
введение в паскальisva69
 
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 27bits
 
Формальные методы защиты приложений
Формальные методы защиты приложенийФормальные методы защиты приложений
Формальные методы защиты приложенийPositive Hack Days
 
Cpp/cli types
Cpp/cli typesCpp/cli types
Cpp/cli typesmcroitor
 
Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10Dima Dzuba
 
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4
Объектно-Ориентированное Программирование на C++, Лекции  3 и 4 Объектно-Ориентированное Программирование на C++, Лекции  3 и 4
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4 Dima Dzuba
 
Объектно-ориентированное программирование. Лекция 7 и 8.
Объектно-ориентированное программирование. Лекция 7 и 8. Объектно-ориентированное программирование. Лекция 7 и 8.
Объектно-ориентированное программирование. Лекция 7 и 8. Dima Dzuba
 
Филипп Ковалев — Путь в npm
Филипп Ковалев — Путь в npmФилипп Ковалев — Путь в npm
Филипп Ковалев — Путь в npmYandex
 
модуль 05 обработка исключений
модуль 05 обработка исключениймодуль 05 обработка исключений
модуль 05 обработка исключенийYevgeniy Gertsen
 
модуль 06 пространства имен
модуль 06 пространства именмодуль 06 пространства имен
модуль 06 пространства именYevgeniy Gertsen
 
модуль 11 структуры, перечисления
модуль 11 структуры, перечислениямодуль 11 структуры, перечисления
модуль 11 структуры, перечисленияYevgeniy Gertsen
 
особенности программирования на с++
особенности программирования на с++особенности программирования на с++
особенности программирования на с++mcroitor
 
А.Власов. "Нижнеуровневая масштабируемая реализация ISO15926"
А.Власов. "Нижнеуровневая масштабируемая реализация ISO15926"А.Власов. "Нижнеуровневая масштабируемая реализация ISO15926"
А.Власов. "Нижнеуровневая масштабируемая реализация ISO15926"Anatoly Levenchuk
 
Использование хранимых процедур в MySQL (Константин Осипов)
Использование хранимых процедур в MySQL (Константин Осипов)Использование хранимых процедур в MySQL (Константин Осипов)
Использование хранимых процедур в MySQL (Константин Осипов)Ontico
 
C++ осень 2012 лекция 9
C++ осень 2012 лекция 9C++ осень 2012 лекция 9
C++ осень 2012 лекция 9Technopark
 

La actualidad más candente (20)

Tagger numbers
Tagger numbersTagger numbers
Tagger numbers
 
C++ Базовый. Занятие 03.
C++ Базовый. Занятие 03.C++ Базовый. Занятие 03.
C++ Базовый. Занятие 03.
 
введение в паскаль
введение в паскальвведение в паскаль
введение в паскаль
 
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2
 
Формальные методы защиты приложений
Формальные методы защиты приложенийФормальные методы защиты приложений
Формальные методы защиты приложений
 
Cpp/cli types
Cpp/cli typesCpp/cli types
Cpp/cli types
 
Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10
 
C++ idioms
C++ idiomsC++ idioms
C++ idioms
 
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4
Объектно-Ориентированное Программирование на C++, Лекции  3 и 4 Объектно-Ориентированное Программирование на C++, Лекции  3 и 4
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4
 
Zend framework 2
Zend framework 2Zend framework 2
Zend framework 2
 
лекц7
лекц7лекц7
лекц7
 
Объектно-ориентированное программирование. Лекция 7 и 8.
Объектно-ориентированное программирование. Лекция 7 и 8. Объектно-ориентированное программирование. Лекция 7 и 8.
Объектно-ориентированное программирование. Лекция 7 и 8.
 
Филипп Ковалев — Путь в npm
Филипп Ковалев — Путь в npmФилипп Ковалев — Путь в npm
Филипп Ковалев — Путь в npm
 
модуль 05 обработка исключений
модуль 05 обработка исключениймодуль 05 обработка исключений
модуль 05 обработка исключений
 
модуль 06 пространства имен
модуль 06 пространства именмодуль 06 пространства имен
модуль 06 пространства имен
 
модуль 11 структуры, перечисления
модуль 11 структуры, перечислениямодуль 11 структуры, перечисления
модуль 11 структуры, перечисления
 
особенности программирования на с++
особенности программирования на с++особенности программирования на с++
особенности программирования на с++
 
А.Власов. "Нижнеуровневая масштабируемая реализация ISO15926"
А.Власов. "Нижнеуровневая масштабируемая реализация ISO15926"А.Власов. "Нижнеуровневая масштабируемая реализация ISO15926"
А.Власов. "Нижнеуровневая масштабируемая реализация ISO15926"
 
Использование хранимых процедур в MySQL (Константин Осипов)
Использование хранимых процедур в MySQL (Константин Осипов)Использование хранимых процедур в MySQL (Константин Осипов)
Использование хранимых процедур в MySQL (Константин Осипов)
 
C++ осень 2012 лекция 9
C++ осень 2012 лекция 9C++ осень 2012 лекция 9
C++ осень 2012 лекция 9
 

Similar a Symfony(keremet research)

Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПЧуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПKirill Chebunin
 
Поговорим о JavaScript, основы и современные тенденции развития языка
Поговорим о JavaScript, основы и современные тенденции развития языкаПоговорим о JavaScript, основы и современные тенденции развития языка
Поговорим о JavaScript, основы и современные тенденции развития языкаAlexander Kucherenko
 
Современные платформы (фреймворки) разработки веб- приложений на PHP
Современные платформы (фреймворки) разработки веб- приложений на PHP Современные платформы (фреймворки) разработки веб- приложений на PHP
Современные платформы (фреймворки) разработки веб- приложений на PHP Magecom Ukraine
 
2014-04-04 03 Александр Курочкин. PHP. Ускорение, о котором нет смысла спорить.
2014-04-04 03 Александр Курочкин. PHP. Ускорение, о котором нет смысла спорить.2014-04-04 03 Александр Курочкин. PHP. Ускорение, о котором нет смысла спорить.
2014-04-04 03 Александр Курочкин. PHP. Ускорение, о котором нет смысла спорить.Омские ИТ-субботники
 
ZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and DoctrineZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and DoctrineZFConf Conference
 
Dynamic Language Runtime
Dynamic Language RuntimeDynamic Language Runtime
Dynamic Language RuntimeGetDev.NET
 
Микрофреймворки PHP
Микрофреймворки PHPМикрофреймворки PHP
Микрофреймворки PHPEkaterina Giganova
 
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел КрынецкийJSC “Arcadia Inc”
 
Роман Еникеев - PHP или откуда взялся слон
Роман Еникеев - PHP или откуда взялся слонРоман Еникеев - PHP или откуда взялся слон
Роман Еникеев - PHP или откуда взялся слонDataArt
 
Clojure: Lisp for the modern world (русская версия)
Clojure: Lisp for the modern world (русская версия)Clojure: Lisp for the modern world (русская версия)
Clojure: Lisp for the modern world (русская версия)Alex Ott
 
Catalyst – MVC framework на Perl (RIT 2008)
Catalyst – MVC framework на Perl  (RIT 2008)Catalyst – MVC framework на Perl  (RIT 2008)
Catalyst – MVC framework на Perl (RIT 2008)Sergey Skvortsov
 
Метапрограммирование с примерами на JavaScript
Метапрограммирование с примерами на JavaScriptМетапрограммирование с примерами на JavaScript
Метапрограммирование с примерами на JavaScriptTimur Shemsedinov
 
Михаил Корепанов — Profiler: Профилирование кода
Михаил Корепанов — Profiler: Профилирование кодаМихаил Корепанов — Profiler: Профилирование кода
Михаил Корепанов — Profiler: Профилирование кодаYandex
 

Similar a Symfony(keremet research) (20)

Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПЧуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОП
 
Zend Framework и Doctrine
Zend Framework и DoctrineZend Framework и Doctrine
Zend Framework и Doctrine
 
UWDC 2013, Yii2
UWDC 2013, Yii2UWDC 2013, Yii2
UWDC 2013, Yii2
 
php frameworks
php frameworksphp frameworks
php frameworks
 
Поговорим о JavaScript, основы и современные тенденции развития языка
Поговорим о JavaScript, основы и современные тенденции развития языкаПоговорим о JavaScript, основы и современные тенденции развития языка
Поговорим о JavaScript, основы и современные тенденции развития языка
 
Современные платформы (фреймворки) разработки веб- приложений на PHP
Современные платформы (фреймворки) разработки веб- приложений на PHP Современные платформы (фреймворки) разработки веб- приложений на PHP
Современные платформы (фреймворки) разработки веб- приложений на PHP
 
2014-04-04 03 Александр Курочкин. PHP. Ускорение, о котором нет смысла спорить.
2014-04-04 03 Александр Курочкин. PHP. Ускорение, о котором нет смысла спорить.2014-04-04 03 Александр Курочкин. PHP. Ускорение, о котором нет смысла спорить.
2014-04-04 03 Александр Курочкин. PHP. Ускорение, о котором нет смысла спорить.
 
Bytecode
BytecodeBytecode
Bytecode
 
ZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and DoctrineZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and Doctrine
 
Symfony 3
Symfony 3Symfony 3
Symfony 3
 
Dynamic Language Runtime
Dynamic Language RuntimeDynamic Language Runtime
Dynamic Language Runtime
 
Микрофреймворки PHP
Микрофреймворки PHPМикрофреймворки PHP
Микрофреймворки PHP
 
Refactoring
RefactoringRefactoring
Refactoring
 
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
 
бегун
бегунбегун
бегун
 
Роман Еникеев - PHP или откуда взялся слон
Роман Еникеев - PHP или откуда взялся слонРоман Еникеев - PHP или откуда взялся слон
Роман Еникеев - PHP или откуда взялся слон
 
Clojure: Lisp for the modern world (русская версия)
Clojure: Lisp for the modern world (русская версия)Clojure: Lisp for the modern world (русская версия)
Clojure: Lisp for the modern world (русская версия)
 
Catalyst – MVC framework на Perl (RIT 2008)
Catalyst – MVC framework на Perl  (RIT 2008)Catalyst – MVC framework на Perl  (RIT 2008)
Catalyst – MVC framework на Perl (RIT 2008)
 
Метапрограммирование с примерами на JavaScript
Метапрограммирование с примерами на JavaScriptМетапрограммирование с примерами на JavaScript
Метапрограммирование с примерами на JavaScript
 
Михаил Корепанов — Profiler: Профилирование кода
Михаил Корепанов — Profiler: Профилирование кодаМихаил Корепанов — Profiler: Профилирование кода
Михаил Корепанов — Profiler: Профилирование кода
 

Symfony(keremet research)

  • 1. Symfony v. 1.4 Архитектура и применение Докладчик: Полоротов Александр
  • 2. Что это?  SYMFONY – это ОО framework написанный на PHP5  Основатель проекта Фабьен Потенсьер  Разработан компанией Sensio Lab
  • 3. Преимущества  Встроенная система кэширования  ORM  Генерируемый CRUD  Расширяемость  Хорошая документация  Многоязычность (i18n)  И еще много много плюшек
  • 4. FRAMEWORK  Framework – это платформа, на которой работает ваше приложение.  Framework – это инструмент НО  Framework не делает всѐ за вас! (вот блин )
  • 5. ЗАЧЕМ?  Сокращает время разработки (начиная с 3-4 проекта)  Позволяет сосредоточиться на реализации конкретной задачи  Облегчает работу в команде
  • 6. ШАБЛОНЫ ПРОЕКТИРОВАНИЯ  Шаблон проектирования (design pattern) — повторимая архитектурная конструкция, представляющая собой решение проблемы проектирования в рамках некоторого часто возникающего контекста.
  • 7. ШАБЛОНЫ ПРОЕКТИРОВАНИЯ В SYMFONY  ACTIVE RECORD (Активная запись)  OBSERVER (Наблюдатель)  MVC И Т. Д.
  • 8. MVC
  • 10. SYMFONY  ORM  Active Record  Data Mapper  DependencyInjection (Внедрение зависимостей)
  • 12. ORM Темы id Title Description Section_id 1 Первая тема Symfony 1 Разделы id Title Description 1 Фреймворки О фреймворках
  • 13. class Theme () { public int Id; public String title; public String description; public Int section_id; public Section section; } class Section () { public int Id; public String title; public String description; }
  • 14. Пример $query = ―INSERT (title,description )INTO theme VALUES (―Тема 2‖, ―Про плюшечки‖); mysql_query($query); $theme = new Theme(); $theme->setTitle(―Title‖); $theme->setDescription(―Про плюшечки‖); $theme->save(); Операции с объектами автоматически переводятся в запросы!
  • 15. SYMFONY COMPONENTS  EVENT DISPATCHER  FORM FRAMEWORK  DOCTRINE / PROPEL
  • 17. FORM Форма Поле 1 Поле 2
  • 18. Поле Widget Validator Formatter
  • 19. FORM  Widget – отображение (визуальный элемент)  Formatter – формат вывода widget‘a  Validator – проверка данных  POSTvalidator  PREvalidator
  • 20. Обработка форм PHP (голый  ) SYMFONY <?php <?php $form = new myForm(); IF ( $_GET[‗name‘] != null && $form->bind($_GET); strlen($_GET[‗name‘] )> 5) { If ($form->isValid()) echo ―Form is valid!‖; echo ―From is valid!‖; } ?>
  • 23.  Используй то, что есть под рукой.  Осознай, что это полный отстой.  Напиши свое.  Подожди, пока кто-то выпустит меньший отстой.  Забрось свое.  Используй чужое.  (с) Пол Ломакс