Symfony > Snowcore’s блог

Symfony

Первым делом хочу поблагодарить своего коллегу YS-PRO за то, что он поведал мне об этом замечательном фреймворке (и за книгу “Definitive guide to symfony”).

Symfony - отлично продуманный и легкий в изучении фреймворк. Написан исключительно на PHP5. Он создан для быстрого создания веб приложений (большинство работы symfony сделает за Вас ;-) Не полный список преимуществ:

- простая установка и стабильная работа в Windows и *nix системах
- независимость от базы данных (поддерживаются MySQL, PostgreSQL, MS-SQL, SQLite, Oracle) - используется ORM (Propel + Creole)
- представление состоит из шаблонов и layouts, которые могут быть созданы дизайнерами без знания symfony

- поддержка автоматизированной валидации форм
- автоматическая очистка пользовательского ввода (для избежания SQL инъекций и XSS аттак)
- ЧПУ (человеко понятные урлы)
- Работа с Ajax, средства для постраничного вывода списков, их фильтрации и сортировки
- автоматизация создания административной части

Что ж, попробуем symfony на своем локальном Apache.

Скачать symfony можно здесь: http://www.symfony-project.org/content/download
Затем распаковываем архив на свой локальный сервер.

Большинство действий выполняются из командной строки при помощи утилиты symfony (/data/bin/symfony.bat). Так что сразу добавим ее в путь поиска Windows (PATH). Идем в Система->Свойства->Дополнительно->Переменные среды и добавляем путь к symfony.bat в переменную PATH.

Теперь создадим проект. Для этого добавляем пустую директорию (например helloSymfony) в корень symfony. Из коммандной строки вызываем symfony init-project helloSymfony (все комманды нужно вызывать из корневого каталога вашего проекта). Symfony создаст следующее дерево каталогов:

apps/
batch/
cache/
config/
data/
doc/
lib/
log/
plugins/
test/
web/

Пожалуй, самой важной директорией для нас является apps - она предназначена для всех приложений проекта.
Следующий шаг - создание приложения (проект должен состоять хотя бы из одного приложения):

symfony init-app helloSymfonyApp

Symfony создаст такую структуру директорий:

apps/
helloSymfonyApp/
config/
i18n/
lib/
modules/
templates/
web/
index.php
helloSymfonyApp_dev.php

Теперь нам нужно сконфигурировать сервер. Делаем доступной для пользователя папку web (это будет корнем нашего сайта) - добавляем VirtualHost hello.
Здесь index.php - точка входа (Front Controller), а helloSymfonyApp_dev.php - точка входа для разработчика (symfony предоставляет средства отладки).

Приложение состоит из модулей (страниц). Добавим страницу home в наше приложение helloSymfonyApp:

symfony init-module helloSymfonyApp home

В следствии чего добавляется еще несколько директорий для модуля ;-)
Самым интересным здесь является сгенерированный класс в actions/actions.class.php

class homeActions extends sfActions
{
  public function executeIndex()
  {
    $this->forward('default', 'module'); // использование стандартного шаблона
  }
}

Это - сердце нашей страницы home - контроллер. Он выполняет некоторые действия (определяет данные для представления) и передает управление шаблону (представлению).
В кратце: каждый метод, начинающийся с executeЧТО-ТО передает управление шаблону под именем ЧТО-ТОSuccess.php, который находится в папке templates данного модуля (о других типах методов и шаблонов расскажу позже).

Теперь попросим symfony поприветствовать нас. Добавим новый метод в homeActions:

public function executeSayHello()
{
  $this->name = 'Geek';
  $this->date('d/m/Y');
}

Чтобы отобразить приветствие создаем шаблон sayHelloSuccess.php (в папке templates):

Symfony says: Hello,

Today’s date is

(смотрим в браузере http://hello/helloSymfonyApp_dev.php/home/sayHello/ )

Как видите, все очень просто: в контроллере мы задаем переменную как $this->имя_переменной, а в представлении она доступна, как обычная переменная.

To be continued… ;-)

5 Responses

  1. [YS.PRO] Says:

    Хороший фреймворк, не поспоришь )…

  2. Гвидон Маляров Says:

    “создан для быстрого создания веб приложений”
    в symfony 1.1 уже другая тенденция, больше в сторону масштабируемости
    http://partweb.ru/articles/symfony11

  3. [YS.PRO] Says:

    Почитал сравнение Symfony vs Ruby On Rails vs Django… короче Django всех сделал… ножом по сердцу )

  4. Александр Says:

    Дизайн студия Artsofte активно развивает и поддерживает специальный блог по symfony - http://symfony.artsofte.ru/
    Приглашаем к сотрудничеству.

  5. CharnaD Says:

    Хочу в скором времени приобщиться к группе разработчиков, использующих Symfony) Ищу полные толковые гайды. Подскажешь? (на мыло там, или мне в блог, а то у тебя нельзя подписаться на обновление каментов)

Оставить комментарий

I'm not spammer :)

Внимание: Комментарии проходят ручную модерацию