Development

Documentation/ru_RU/book/1.0/01-Introducing-Symfony (diff)

You must first sign up to be able to contribute.

Changes between Version 5 and Version 6 of Documentation/ru_RU/book/1.0/01-Introducing-Symfony

Show
Ignore:
Author:
Pashugan (IP: 89.179.163.100)
Timestamp:
01/04/08 10:09:26 (10 years ago)
Comment:

Можно считать не очень дотошной правкой явных ошибок и опечаток перевода. Т.е. с оригиналом не сверялся, термины также оставлял как есть, просто немного причесал текст.

Legend:

Unmodified
Added
Removed
Modified
  • Documentation/ru_RU/book/1.0/01-Introducing-Symfony

    v5 v6  
    88Что необходимо для работы с symfony? Какие возможности обеспечивает symfony? Здесь вы найдете ответы на эти вопросы. 
    99 
    10 В кратце о Symfony 
     10Вкратце о Symfony 
    1111------------------ 
    1212 
    13 Symfony — фреймворк с открытым кодом, полностью написанный на PHP5. Использование фреймворка, позволяет создавать более структурированный, читаемый код и упрощает программирование, хотя бы потому, что набор сложных операций часто можно заменить одной строчкой кода. Symfony основан на идее MVC (MVC pattern) и создан для упрощения разработки веб приложений. Фреймворк включает в себя множество инструментов и классов, призванных максимально сократить время разработки сложного веб приложения. Также symfony автоматизирует наиболее популярные и частые задачи, что позволяет разработчику уделить больше внимания особенностям данного конкретного проекта. Благодаря вышеперечисленным преимуществам, вам не потребуется изобретать колесо, каждый раз когда вы приступите к разработке нового приложения. 
     13Symfony — фреймворк с открытым кодом, полностью написанный на PHP5. Использование фреймворка позволяет создавать более структурированный, читаемый код и упрощает программирование хотя бы потому, что набор сложных операций часто можно заменить одной строчкой кода. Symfony основан на идее MVC (MVC pattern) и создан для упрощения разработки веб-приложений. Фреймворк включает в себя множество инструментов и классов, призванных максимально сократить время разработки сложного веб-приложения. Также symfony автоматизирует наиболее популярные и частые задачи, что позволяет разработчику уделить больше внимания особенностям данного конкретного проекта. Благодаря вышеперечисленным преимуществам, вам не потребуется изобретать колесо, каждый раз когда вы приступите к разработке нового приложения. 
    1414 
    1515Фреймворк использовался и хорошо себя зарекомендовал во многих проектах (На текущий момент (''2006-10-28'') на symfony построена бета-версия '''Yahoo! Bookmarks'''), в том числе в сложных приложениях е-коммерции. Symfony совместим со многими базами данных (включая MySQL, PostgreSQL, Oracle, и Microsoft SQL Server) и может быть установлен и на *nix и на Windows. Перечислим возможности фреймворка подробнее. 
    2020Symfony соответствует следующим требованиям: 
    2121 
    22   * Легко устанавливать и настраивать (конфигурировать) на большинсве платформ (гарантированно работает на *Unix и Windows). 
     22  * Легко устанавливать и настраивать (конфигурировать) на большинстве платформ (гарантированно работает на *Unix и Windows). 
    2323  * Независимость от выбора базы данных. 
    2424  * Простота использования в большинстве случаев, и гибкость для решения нетипичных задач. 
    3434 
    3535  * Встроенный слой (layer) для поддержки многоязычности приложения позволяет переводить интерфейс и данные. 
    36   * HTML страницы строятся из шаблонов (template) и главных шаблонов (layout - общие шаблоны для всех модулей данного приложения). Шаблоны можно делать не обладая никакими знаниями о фреймворке. Helpers (''англ.'' помощники)- позволяют делать код в шаблонах более читаемым, помещая большие порции кода в одну строчку с вызовом функции. 
     36  * HTML-страницы строятся из шаблонов (template) и главных шаблонов (layout — общие шаблоны для всех модулей данного приложения). Шаблоны можно делать не обладая никакими знаниями о фреймворке. Helpers (''англ.'' помощники) — позволяют делать код в шаблонах более читаемым, помещая большие порции кода в одну строчку с вызовом функции. 
    3737  * Формы в symfony поддерживают автоматическую валидацию. 
    3838  * Приложение защищено от атак путем ввода искаженной информации. 
    3939  * Возможности кэширования уменьшают нагрузку на сервер и увеличивают быстродействие. 
    40   * Спецальные средства, упрощают управление безопасностью и разграниченим прав доступа пользователей. 
     40  * Спецальные средства упрощают управление безопасностью и разграничением прав доступа пользователей. 
    4141  * Красивые URL делают строку адреса полезной для поисковых машин, и позволяют использовать ее как часть интерфейса. 
    42   * Встроенная поддержка e-mail и средства управления API позволяют веб приложениям переступать через классические  взаимодействия с браузером 
     42  * Встроенная поддержка e-mail и средства управления API позволяют веб-приложениям переступать через классические  взаимодействия с браузером 
    4343  * Есть удобные списки, с автоматизированным пейджингом, сортировкой и фильтрацией. 
    44   * Благодаря специальным helper-ам легко создавать интерфейсы на базе AJAX, поддерживающие различные браузеры 
     44  * Благодаря специальным helper'ам легко создавать интерфейсы на базе AJAX, поддерживающие различные браузеры 
    4545 
    4646### Режим разработки (development environment) 
    4848Symfony может быть полностью сконфигурирован согласно требованиям различных фирм и компаний, у каждой из которых есть свои правила разработки. По умолчанию фреймворк предоставляет режим разработки (development environment), содержащий множество инструментов для автоматизации наиболее типичных задач: 
    4949 
    50   * Благодаря возможности генерировать код можно одной командой построить админинтерфейс
     50  * Благодаря возможности генерировать код можно одной командой построить интерфейс администратора
    5151  * Фреймворк предоставляет инструменты, упрощающие TDD (test-driven development). 
    5252  * На панель отладки (debug toolbar) выводится вся информация, необходимая для исправления ошибок. 
    5858--------------------------- 
    5959 
    60 Первая версия symfony была выпущена в октябре 2005-ого основателем проекта Фабьеном Потенсьером (Fabien Potencier). Fabien — гендиректор Sensio (http://www.sensio.com/), французкой веб-фирмы известной своими инновационными взглядами на веб-разработку. 
    61  
    62 В 2003 году Фабьен изучил возможности существующих средств разработки приложений на PHP5, с открытым кодом. Ни одно из них не удовлетворяло перечисленным выше требованиям. Когда же появился PHP5, Фабьен решил что PHP созрел для написания полнофункционального фреймворка. Позже он потратил год на разработку ядра symfony, взяв в качестве основы MVC pattern, ORM Propel, и helper-ы из Ruby on Rails. 
    63  
    64 Изначально Фабьен разрабатывал symfony для Sensio. Это дало бы фирме преимущества, поскольку использование фреймворка в работе делает готовые проекты более надежными, а разработку приложений быстрой и интуитивно понятной. После успешного использования фреймворка в приложениях е-комерции и других проектах Фабьен решил сделать symfony проектом с открытым кодом. Он сделал это чтобы дать возможность другим людям пользоваться symfony, чтоб получить связь с пользователями фреймворка, чтоб поделится опытом Sensio, и потому что open sourсe это весело :) 
    65  
    66 >**NOTE** 
    67 >Почему фреймворк назвали symfony? Потому что Фабьен хотел дать фреймворку короткое имя, легко запоминающейся, не ассоциирующейся с другими проектами, содержащее буквы “s” (Sensio) и “f” (framework). Также он не любит большие буквы. “symfony” подходит под все эти требования, не смотря на то, что слово не полностью английское. Другой альтернативой было название “baguette.” (''багет, длинный французский хлеб'') </p></blockquote> 
    68  
    69 Для того чтоб symfony стал успешным проектом требовалась хорошая документация на английском языке. Фабьен попросил своего товарища François-а Zaninotto, сотрудничавшего с Sensio, разобраться во фреймворке и написать online книгу о symfony. Это заняло время, но в итоге у symfony появилась замечательная документация, благодаря которой фреймворк стало использовать множество разработчиков. Остальное история. 
     60Первая версия symfony была выпущена в октябре 2005 г. основателем проекта Фабьеном Потенсьером (Fabien Potencier). Fabien — генеральный директор Sensio (http://www.sensio.com/), французской веб-фирмы, известной своими инновационными взглядами на веб-разработку. 
     61 
     62В 2003 году Фабьен изучил возможности существующих средств разработки приложений на PHP5 с открытым кодом. Ни одно из них не удовлетворяло перечисленным выше требованиям. Когда же появился PHP5, Фабьен решил, что PHP созрел для написания полнофункционального фреймворка. Позже он потратил год на разработку ядра symfony, взяв в качестве основы MVC pattern, ORM Propel, и helper'ы из Ruby on Rails. 
     63 
     64Изначально Фабьен разрабатывал symfony для Sensio. Это дало бы фирме преимущества, поскольку использование фреймворка в работе делает готовые проекты более надежными, а разработку приложений быстрой и интуитивно понятной. После успешного использования фреймворка в приложениях е-комерции и других проектах Фабьен решил сделать symfony проектом с открытым кодом. Он сделал это, чтобы дать возможность другим людям пользоваться symfony, чтобы получить связь с пользователями фреймворка, чтобы поделится опытом Sensio, и потому что open sourсe это весело. :) 
     65 
     66>**NOTE** 
     67>Почему фреймворк назвали symfony? Потому что Фабьен хотел дать фреймворку короткое имя, легко запоминающееся, не ассоциирующееся с другими проектами, содержащее буквы “s” (Sensio) и “f” (framework). Также он не любит большие буквы. “symfony” подходит под все эти требования, не смотря на то, что слово не полностью английское. Другой альтернативой было название “baguette.” (''багет, длинный французский хлеб'') </p></blockquote> 
     68 
     69Для того, чтобы symfony стал успешным проектом, требовалась хорошая документация на английском языке. Фабьен попросил своего товарища François Zaninotto, сотрудничавшего с Sensio, разобраться во фреймворке и написать online книгу о symfony. Это заняло время, но в итоге у symfony появилась замечательная документация, благодаря которой фреймворк стали использовать множество разработчиков. Остальное история. 
    7070 
    7171Сообщество symfony 
    7272------------------ 
    7373 
    74 После того как был запущен сайт symfony (http://www.symfony-project.com/), многие разработчики скачивали и устанавливали фреймворк, создавали свои первые проекты на symfony. Дело начало набирать обороты. В это время фреймворки для разработки веб приложений набирали популярность и потребность в полнофункциональном PHP фреймворке была высока. Symfony предлагал подробную документацию и замечательные решения с высоким качеством кода — два основных преимущества фреймворка. Вскоре появились помощники, которые предлагали различные патчи и улучшения, вычитывали документацию, и всячески помогали развитию проекта. Открытый репозиторий с кодом и система ticket-ов (баг трекер) дали возможность помогать проекту всем желающим. Symfony всегда рад волонтерам. Фабьен продолжает активно разрабатывать фреймворк, и гарантирует качество кода в репозитории. 
    75  
    76 Форум, открытая переписка (mailing lists), и канал IRC чата обеспечивают поддержку пользователей. В среденем на любой вопрос приходится четыре ответа. Каждый день увеличивается число пользователей symfony. Wiki и code snippets (куски кода которые могут быть полезными) пополняются пользователями фреймворка. Количество приложений разработанных на symfony растет, в среднем +5 в день. Развитое сообщество — третье преимущество symfony. 
     74После того как был запущен сайт symfony (http://www.symfony-project.com/), многие разработчики скачивали и устанавливали фреймворк, создавали свои первые проекты на symfony. Дело начало набирать обороты. В это время фреймворки для разработки веб-приложений набирали популярность, и потребность в полнофункциональном PHP фреймворке была высока. Symfony предлагал подробную документацию и замечательные решения с высоким качеством кода — два основных преимущества фреймворка. Вскоре появились помощники, которые предлагали различные патчи и улучшения, вычитывали документацию и всячески помогали развитию проекта. Открытый репозиторий с кодом и система ticket'ов (баг-трекер) дали возможность помогать проекту всем желающим. Symfony всегда рад волонтерам. Фабьен продолжает активно разрабатывать фреймворк, и гарантирует качество кода в репозитории. 
     75 
     76Форум, открытая переписка (mailing lists), и канал IRC чата обеспечивают поддержку пользователей. В среднем на любой вопрос приходится четыре ответа. Каждый день увеличивается число пользователей symfony. Wiki и code snippets (куски кода которые могут быть полезными) пополняются пользователями фреймворка. Количество приложений, разработанных на symfony, растет в среднем на 5 штук в день. Развитое сообщество — третье преимущество symfony. 
    7777 
    7878Symfony подойдет мне? 
    8383Если вы хотите создать простой сайт с пятью-десятью страницами, доступом к базе данных, и вам не нужно обеспечить сайт документацией и быть уверенным в его надежности, тогда лучше не использовать symfony. Вы мало выиграйте от использования фреймворка, и возможно объектная ориентированность кода и идея MVC только понизят скорость разработки. Отметим, что symfony не оптимизирован для работы на серверах, где PHP-скрипты могут быть запущены только в режиме CGI. 
    8484 
    85 С другой стороны, для разработки серьезного веб приложения, со сложной логикой, голого PHP будет недостаточно. Если вы планируйте поддерживать и расширять приложение в будущем, и получить неперегруженный и читаемый код, если вы хотите разрабатывать современные интерфейсы с использованием AJAX, и при этом не писать сотни строчек JavaScript, если вы хотите сделать свою работу более легкой и быстрой, тогда symfony вам подойдет. 
    86  
    87 Если вы профессиональный веб разработчик и ищите развитый PHP фреймворк с хорошей документацией и большим сообществом (community), то symfony — для вас. 
    88  
    89 Можете посмотреть деморолики (screencast) на сайте проекта, чтоб убедится как легко и быстро можно создавать приложения, используя symfony. 
     85С другой стороны, для разработки серьезного веб-приложения со сложной логикой голого PHP будет недостаточно. Если вы планируете поддерживать и расширять приложение в будущем и получить неперегруженный и читаемый код, если вы хотите разрабатывать современные интерфейсы с использованием AJAX, и при этом не писать сотни строчек JavaScript, если вы хотите сделать свою работу более легкой и быстрой, тогда symfony вам подойдет. 
     86 
     87Если вы профессиональный веб-разработчик и ищите развитый PHP-фреймворк с хорошей документацией и большим сообществом (community), то symfony — для вас. 
     88 
     89Можете посмотреть демо-ролики (screencast) на сайте проекта, чтобы убедится, как легко и быстро можно создавать приложения, используя symfony. 
    9090 
    9191 
    100100 
    101101>**NOTE** 
    102 >Мне кажется авторы перегибают в этом месте. Я не могу сказать, что когда я начал осваивать symfony у меня было «твердое понимание PHP5» (прошло меньше полгода после того как я написал первую строчку на PHP). Не смотря на это ничего страшного со мной не случилось. Так что не стоит пугаться, если вы не сильно подкованы в PHP. (прим. переводчика) 
    103  
    104 Разработчикам, которые работали с PHP4, но не работали с PHP5 следует обратить внимание на новую объектно-ориентированную модель языка (object-oriented model). 
     102>Мне кажется, авторы перегибают в этом месте. Не могу сказать, что когда я начал осваивать symfony, у меня было «твердое понимание PHP5» (прошло меньше полугода после того, как я написал первую строчку на PHP). Несмотря на это, ничего страшного со мной не случилось. Так что не стоит пугаться, если вы не сильно подкованы в PHP. (прим. переводчика) 
     103 
     104Разработчикам, которые работали с PHP4, но не работали с PHP5, следует обратить внимание на новую объектно-ориентированную модель языка (object-oriented model). 
    105105 
    106106### Объектно-ориентированное программирование (ООП) 
    114114### Magic Methods 
    115115 
    116 Одна из сильных сторон PHP5 — использование magic method-ов (''англ.'' волшебный метод). Это методы призванные изменить работу классов без правки кода. Наличие magic method-ов делает синтаксис PHP более гибким. Такие методы легко узнать — их названия начинаются с двойного подчеркивания (!__). 
     116Одна из сильных сторон PHP5 — использование magic method'ов (''англ.'' волшебный метод). Это методы, призванные изменить работу классов без правки кода. Наличие magic method'ов делает синтаксис PHP более гибким. Такие методы легко узнать — их названия начинаются с двойного подчеркивания (!__). 
    117117 
    118118Например выводя объект, PHP ищет метод !__toString() 
    119 данного класса, чтоб узнать задал ли разработчик свой формат вывода: 
     119данного класса, чтобы узнать, задал ли разработчик свой формат вывода: 
    120120 
    121121    [php] 
    126126    echo $myObject->__toString(); 
    127127 
    128 Symfony использует magic method-ы, поэтому рекомендуется ознакомится с их описанием (http://www.php.net/manual/en/language.oop5.magic.php). 
     128Symfony использует magic method'ы, поэтому рекомендуется ознакомится с их описанием (http://www.php.net/manual/en/language.oop5.magic.php). 
    129129 
    130130### PHP Extension and Application Repository (PEAR) 
    131131 
    132 PEAR это система распростанения полезных PHP компонентов (пакетов, библиотек). PEAR позволяет скачивать, устанавливать, делать upgrade и удалять PHP пакеты. Используя пакеты из PEAR, вам не нужно волноваться о том, куда что пишется, и как устанавливаемые скрипты становятся доступными и т.п. — все это делается автоматически.  
     132PEAR — это система распространения полезных PHP-компонентов (пакетов, библиотек). PEAR позволяет скачивать, устанавливать, делать upgrade и удалять PHP-пакеты. Используя пакеты из PEAR, вам не нужно волноваться о том, куда что пишется, как устанавливаемые скрипты становятся доступными и т.п. — все это делается автоматически.  
    133133 
    134134PEAR поддерживается сообществом. На сайте проекта (http://pear.php.net/) можно найти документацию и пакеты, сгруппированные по категориям. 
    135135 
    136 Установка через PEAR — наиболее профессиональный путь установки библиотек. Symfony рекомендует использовать PEAR для того чтоб устанавливаемые пакеты были общими для всех ваших проектов. Plug-in-ы для фреймворка это специально сконфигурированные PEAR пакеты. Сам фреймворк также доступен как PEAR пакет. 
    137  
    138 Вам не нужно в совершенстве знать устройство PEAR для использования symfony. Главное — понимать что это и установить его на свой компьютер. Вы можете проверить установлен ли PEAR c помощью команды: 
     136Установка через PEAR — наиболее профессиональный путь установки библиотек. Symfony рекомендует использовать PEAR для того, чтобы устанавливаемые пакеты были общими для всех ваших проектов. Plugin'ы для фреймворка — это специально сконфигурированные PEAR-пакеты. Сам фреймворк также доступен как PEAR-пакет. 
     137 
     138Вам не нужно в совершенстве знать устройство PEAR для использования symfony. Главное — понимать что это и установить его на свой компьютер. Вы можете проверить, установлен ли PEAR, c помощью команды: 
    139139 
    140140    > pear info pear 
    141141 
    142 Эта команда должна вывести номер верcии вашего PEAR. Symfony имеет свой канал в PEAR. Отметим, что использование каналов возможно только если у вас установлен PEAR версии не менее 1.4.0. Если меньше, то вам нужно сделать upgrade, используя команду: 
     142Эта команда должна вывести номер верcии вашего PEAR. Symfony имеет свой канал в PEAR. Отметим, что использование каналов возможно, только если у вас установлен PEAR версии не менее 1.4.0. Если меньше, то вам нужно сделать upgrade, используя команду: 
    143143 
    144144    > pear upgrade PEAR 
    146146### Object-Relational Mapping (ORM) 
    147147 
    148 Базы данных — реляционные. PHP 5 и symfony — объектно-ориентированны. Для того чтоб доступ к базам был объектно-ориентированным требуется интерфейс позволяющий перевести объектную логику в реляционную. Этот интерфейс называется object-relational mapping, или ORM. 
     148Базы данных — реляционные. PHP5 и symfony — объектно-ориентированны. Для того, чтобы доступ к базам был объектно-ориентированным, требуется интерфейс, позволяющий перевести объектную логику в реляционную. Этот интерфейс называется object-relational mapping, или ORM. 
    149149 
    150150ORM построен из классов, с помощью которых можно получить доступ к базе данных. 
    151151 
    152 Одно из преимуществ ORM — вам не нужно изучать язык запросов, индивидуальный для каждой базы данных. Операции с объектами автоматически переводятся в запросы, оптимизированные для текущего типа базы данных. Это означает, что перейти на другую базу данных, даже по середине разработки проекта будет просто. 
    153  
    154 Еще одно преимущество использования объектов вместо записей и классов вместо таблиц — вы можете определить нужные вам операции. Например, есть таблица Client с полями !FirstName и !LastName. Допустим вам нужно получать Имя+Фамилия. Благодаря ORM это просто сделать добавив метод: 
     152Одно из преимуществ ORM — вам не нужно изучать язык запросов, индивидуальный для каждой базы данных. Операции с объектами автоматически переводятся в запросы, оптимизированные для текущего типа базы данных. Это означает, что перейти на другую базу данных, даже посередине разработки проекта, будет просто. 
     153 
     154Еще одно преимущество использования объектов вместо записей и классов вместо таблиц — вы можете определить нужные вам операции. Например, есть таблица Client с полями !FirstName и !LastName. Допустим, вам нужно получать Имя+Фамилия. Благодаря ORM это просто сделать, добавив метод: 
    155155 
    156156    [php] 
    161161    } 
    162162 
    163 Все повторяющиеся операции с данными в коде, могут быть заменены подобными методами. Еще один пример: 
    164  
    165 Есть класс !ShoppingCart, с помощью которого вы храните товары (items). Для того чтоб получить суммарную цену товаров клиента можно добавить метод getTotal(): 
     163Все повторяющиеся операции с данными в коде могут быть заменены подобными методами. Еще один пример: 
     164 
     165Есть класс !ShoppingCart, с помощью которого вы храните товары (items). Для того, чтобы получить суммарную цену товаров клиента, можно добавить метод getTotal(): 
    166166 
    167167    [php] 
    177177    } 
    178178 
    179 А теперь представьте сколько бы времени потребовалось на написание аналогичного SQL-запроса. 
     179А теперь представьте, сколько бы времени потребовалось на написание аналогичного SQL-запроса. 
    180180 
    181181Propel — один из лучших ORM для PHP5. Propel встроен в symfony, так что  оперировать данными можно на "объектном языке". В следующих главах будут рассказаны основы синтаксиса Propel, но более детальную документацию можно найти по адресу http://propel.phpdb.org/trac/. 
    186186>rapid application development переводится как «быстрая разработка приложений» 
    187187 
    188 Веб программирование долгое время было скучной и медленной работой. Следуя стратегии полных циклов разработки, к работе не приступали прежде чем не был сформирован список требований, не нарисовано множество диаграмм (Unified Modeling Language (UML) diagrams) и не написаны тонны документации. Это было обусловлено скоростью разработки (нужно написать, скомпилировать и бог знает что еще сделать прежде чем увидеть программу в действии), и конечно же клиентами, которые были более рассудительны и не меняли постоянно свои требования. 
    189  
    190 Сегодня, когда все процессы в бизнессе очень быстрые, клиенты склонны постоянно менять свои требования по ходу разработки. Конечно же, они ожидают что разработчики быстро адаптируются к новым требованиям и изменят проект. К счастью, использование таких скриптовых языков, как Perl и PHP позволяют применить другие стратегии разработки. Например rapid application development (RAD) (синоним — agile development). 
    191  
    192 Одна из идей этой стратегии — начинать разработку как можно быстрее, чтоб клиент видел уже рабочую заготовку и корректировал работу в нужном направлении. То есть процесс разработки носит итеративный характер: как можно быстрее сделали, выслушали пожелания заказчика и опять за работу. Так, шаг за шагом, следуя стратегии коротких циклов разработки, проект приближается к идеалу клиента. 
    193  
    194 Основные принципы работы согласно RAD следующие: разработчик не должен думать "в перспективу", когда решает какую-то подзадачу (например, добавляет какой-то функционал). Решение должно быть самое простое из возможных (принцип KISS: Keep It Simple, Stupid.  ''англ.'' "делай просто и глупо"). Когда, при следующей итерации, требования поменяются, код нужно будет частично переписать. Это часто случается по ходу разработки. Код перемещают в другие файлы, туда где им место согласно их сущности (например все операции с базой данных лежат в одном месте). Повторяющейся код переносится в одно место, и заменяется на вызовы функций или методов. (принцип DRY: Don't Repeat Yourself.  ''англ.'' "не повторяй себя"). Этот процесc реорганизации кода называется refactoring
    195  
    196 Для того чтоб быть уверенным, что все приложение по прежнему работает правильно, несотря на постоянные изменения, необходимо проводить юнит тестирование. Юнит тестирование это отличный способ быть уверенным в том, что все работает четко после изменений в коде. Некоторые стратегии разработки гласят, что нужно писать тесты прежде чем писать код приложения, это называется test-driven development (TDD). 
    197  
    198 Есть еще много принципов и хороших привычек, связанных с RAD. Одна из наиболее эффективных RAD-стратегий называется Extreme Programming (сокращенно XP). Литература по XP может научить многому для быстрой и эффективной разработки приложений. Отправной точкой может послужить серия книг по XP написанная Kent Beck-ом (Addison-Wesley). Symfony — отличный инструмент для RAD. Важен тот факт, что symfony создан компаний, применяющей RAD для своих проектов. Это означает, что научится использовать symfony это научится применять все лучшие на сегодня правила и принципы веб разработки. 
     188Веб-программирование долгое время было скучной и медленной работой. Следуя стратегии полных циклов разработки, к работе не приступали прежде чем не был сформирован список требований, не нарисовано множество диаграмм (Unified Modeling Language (UML) diagrams) и не написаны тонны документации. Это было обусловлено скоростью разработки (нужно написать, скомпилировать и бог знает что еще сделать прежде чем увидеть программу в действии), и конечно же клиентами, которые были более рассудительны и не меняли постоянно свои требования. 
     189 
     190Сегодня, когда все процессы в бизнесе очень быстрые, клиенты склонны постоянно менять свои требования по ходу разработки. Конечно же, они ожидают, что разработчики быстро адаптируются к новым требованиям и изменят проект. К счастью, использование таких скриптовых языков, как Perl и PHP позволяют применить другие стратегии разработки. Например rapid application development (RAD) (синоним — agile development). 
     191 
     192Одна из идей этой стратегии — начинать разработку как можно быстрее, чтобы клиент видел уже рабочую заготовку и корректировал работу в нужном направлении. То есть процесс разработки носит итеративный характер: как можно быстрее сделали, выслушали пожелания заказчика и опять за работу. Так, шаг за шагом, следуя стратегии коротких циклов разработки, проект приближается к идеалу клиента. 
     193 
     194Основные принципы работы согласно RAD следующие: разработчик не должен думать "в перспективу", когда решает какую-то подзадачу (например, добавляет какой-то функционал). Решение должно быть самое простое из возможных (принцип KISS: Keep It Simple, Stupid.  ''англ.'' "делай просто и глупо"). Когда, при следующей итерации, требования поменяются, код нужно будет частично переписать. Это часто случается по ходу разработки. Код перемещают в другие файлы, туда где им место согласно их сущности (например, все операции с базой данных лежат в одном месте). Повторяющийся код переносится в одно место, и заменяется на вызовы функций или методов. (принцип DRY: Don't Repeat Yourself.  ''англ.'' "не повторяй себя"). Этот процесc реорганизации кода называется рефакторинг (refactoring)
     195 
     196Для того, чтобы быть уверенным, что всё приложение по-прежнему работает правильно, несмотря на постоянные изменения, необходимо проводить юнит-тестирование. Юнит-тестирование — это отличный способ быть уверенным в том, что всё работает четко после изменений в коде. Некоторые стратегии разработки гласят, что нужно писать тесты прежде чем писать код приложения, и это называется test-driven development (TDD). 
     197 
     198Есть ещё много принципов и хороших привычек, связанных с RAD. Одна из наиболее эффективных RAD-стратегий называется Extreme Programming (сокращенно XP). Литература по XP может научить многому для быстрой и эффективной разработки приложений. Отправной точкой может послужить серия книг по XP, написанная Kent Beck'ом (Addison-Wesley). Symfony — отличный инструмент для RAD. Важен тот факт, что symfony создан компанией, применяющей RAD для своих проектов. Это означает, что научиться использовать symfony — это научиться применять все лучшие на сегодня правила и принципы веб-разработки. 
    199199 
    200200На сайте symfony размещен туториал, иллюстрирующий принципы RAD. У туториала есть имя — "askeet", и находится он по адресу http://www.symfony-project.com/askeet. Askeet рекомендуется всем, кто хочет глубже понять принципы RAD на практике. 
    202202### YAML 
    203203 
    204 Согласно официальному сайту YAML (http://www.yaml.org/), YAML — это "формат, для представления данных в читаемом для человека виде и взаимодействия со скриптовыми языками, который может быть легко обработан (parse)" 
     204Согласно официальному сайту YAML (http://www.yaml.org/), YAML — это "формат для представления данных в читаемом для человека виде и взаимодействия со скриптовыми языками, который может быть легко обработан (parse)" 
    205205 
    206206>**NOTE** 
    207207>Перевод цитаты вышел не очень удачно, на всякий случай приведу ее на английском: "a straightforward machine parsable data serialization format designed for human readability and interaction with scripting languages." (прим. переводчика) 
    208208 
    209 По-другому YAML это очень простой язык используемый для описания данных, подобный XML, но с очень простым синтаксисом. Особенно удобен для описания данных, которые могут быть представлены в виде массивов или хэшей. Например: 
     209Иначе говоря, YAML — это очень простой язык, используемый для описания данных, подобный XML, но с очень простым синтаксисом. Особенно удобен для описания данных, которые могут быть представлены в виде массивов или хэшей. Например: 
    210210 
    211211    [php] 
    243243        zipcode: 12345 
    244244 
    245 В YAML, структура данных описывается с помощью ключей. Последовательность элементов выделяется дефисом (dash). В YAML  можно также пользоваться укороченным синтаксисом, для определения той же структуры данных: массивы выделены квадратными скобками [], а хэши фигурными {}. То есть данные из примера могут быть представлены так: 
     245В YAML структура данных описывается с помощью ключей. Последовательность элементов выделяется дефисом (dash). В YAML  можно также пользоваться укороченным синтаксисом, для определения той же структуры данных: массивы выделены квадратными скобками [], а хэши фигурными {}. То есть данные из примера могут быть представлены так: 
    246246 
    247247    house: 
    249249      address: { number: 34, street: Main Street, city: Nowheretown, zipcode: 12345 } 
    250250 
    251 YAML расшифровуется как Yet Another Markup Language и произносится "yamel". Формат существует с 2001 года, и parser-ы для YAML написаны для многих языков. Спецификации доступны по адресу http://www.yaml.org/. Файл YAML пишется гораздо быстрее, чем аналогичный XML и обеспечивает больше возможностей, чем файлы .ini (которые не поддерживают иерархию). Вот почему symfony использует YAML файлы как файлы конфигурации. В следующих главах вы увидите много YAML файлов, все они очень просты. 
     251YAML расшифровывается как Yet Another Markup Language и произносится как "yamel". Формат существует с 2001 года, и parser'ы для YAML написаны для многих языков. Спецификации доступны по адресу http://www.yaml.org/. Файл YAML пишется гораздо быстрее, чем аналогичный XML, и обеспечивает больше возможностей, чем файлы .ini (которые не поддерживают иерархию). Вот почему symfony использует YAML файлы как файлы конфигурации. В следующих главах вы увидите много YAML файлов, все они очень просты. 
    252252 
    253253Итого 
    254254----- 
    255255 
    256 Symfony это фреймоврк написанный на  PHP5. Он обеспечивает множество удобных инструментов для разработки сложных веб приложений. Эта книга рассказывает о возможностях фреймворка. Чтоб понять изложенный материал нужно понимать базовые идеи современного программирования: объектно-ориентированное программирование ООП, object-relational mapping (ORM) и rapid application development (RAD). Единственное техническое условие — знание PHP5. 
     256Symfony — это фреймворк, написанный на  PHP5. Он обеспечивает множество удобных инструментов для разработки сложных веб-приложений. Эта книга рассказывает о возможностях фреймворка. Чтобы понять изложенный материал, нужно понимать базовые идеи современного программирования: объектно-ориентированное программирование (ООП), object-relational mapping (ORM) и rapid application development (RAD). Единственное техническое условие — знание PHP5. 
    257257 
    258258Перевел Алексей Гоголев