Symfony — это один из тех фреймворков на PHP5, который привлекает своей достаточной документацией, множеством плагинов, обновлениями, анонсами новых версий и многим другим. К сожалению документации на русском языке пока мало. Многие зарезервированные доменты вроде http://symfony-project.ru/ лишь имею одну фразу — «Скоро будет». И причём уже давно. На самом проекте http://symfony-project.org/ в разделе документации можно увидеть наш триколор только в разделе «Cookbook». Итак, я бросаю вызов и намереваюсь заняться переводом. API переводить думаю смысла нет, книга — слишком объёма пока что для меня (но это временно явление, возьмусь может и за неё). А переводить мы начнём Askeet Tutorial. Если первый перевод примут — буду перводить дальше. Каждый день не обещаю, но постараюсь в будние дни по статье выкладывать
Вызов (от автора)
Предрождественнский календарь symfony это набор из 24 уроков, публикуемых ежедневно с 1 декабря и до наступления рождества. Всё верно, каждый, включая выходные, будет публиковаться новый урок. Каждый урок не должен занимать более часа и даст нам возможность наблюдать за продвигающейся разработкой Web 2.0 приложения от А до Я. В рождество финальная версия приложения появится в онлайне, а исходный код будет открытым. Приложение будет практичным, интересным, полезным и забавным. 24 раза по часу это сутки и это максимум времени, по нашему мнению, которое программист должен потратить на изучение symfony. Каждый день в приложение будут добавляться новые возможности и главным преимуществом данной разработки является рассмотрение преимуществ функционала symfony, ровно так же как и получение хорошей практики в разработке веб-приложений на symfony. Каждый день вы будете сознавать насколько быстро и эффективно разрабатывать веб-приложение на symfony… И вы будете хотеть знать больше. Учитывая, что не будет достаточно справиться лишь с этим и учитывая что мы ленивые чуваки — у нас ничего не запланировано на 21 день — зимний сезон. В чём суть? Что потребует сообщество, то мы и добавим в приложение в этот день. Без подготовки. И заставим это работать. Это будет день «найми-symfony-гуру-на-день».
The Проджект
Разрабатываемое приложение может быть обычным «покажи-и-расскажи», список задач (to-do list), телефонная книга или книжный магазин. Но мы хотим использовать symfony в оригинально проекте, полезном, с кучей фишечек и рюшечек и серьёзным размером. Наша задача — доказать, что symfony может быть использован в сложных ситуациях, в разработке профессиональных приложений со своим стилем и изюминкой. Мы надеемся что люди будут использовать приложение, чтобы показать что проект на symfony может выдерживать серьёзные нагрузки. Поэтому приложение должно быть актуальным и отвечать существующим потребностям или создать новые. Запуск сайта будет реальной проверкой на прочность. Вы нам понадобитесь, уважаемые читатели, для того чтобы копать/лазить/чатиться на сайте и обсуждать смысл жизни, чтобы проверить максимальную нагрузку. Суть проекта мы сохраним для следующего дня. У нас не мало работы и без описывания полноценного Web-2.0 приложения. Тем не менее имя необходимо. Назовём его «Спросика» (Askeet).
Что у нас сегодня?
Задачами на сегодня являются: отобразить страницу приложения в браузере и сконфигурировать профессиоанальную среду разработки. Это будет легко для тех, кто уже читал другие уроки и не слишком сложно для остальных. И каждый найдём для себя что-то новое. Преположим, что вы используете Unix систему с установленными Apache, Mysql и PHP5. Если вы работаете под Windows — не стоит паниковать. Всё будет отлично работать, просто придётся ввести несколько дополнительных директив в коммандной строке.
Команды Unix могут быть очень полезны в Windows. Если вы хотите использовать инструменты вроде tar, gzip или grep — в Windows — установите Cygwin. Официальная документация немного разроненна, хороший гайд может быть найден здесь. Экстремалы так же могу попробовать Сервисы Windows для Unix.
Установка Symfony
Самый простой способ — использовать пакет PEAR. Тем менее, чтобы использовать каналы и получить доступ к каналу symfony, вам придётся апгрейдить PEAR до версии 1.4.0 или более (если вы конечно не используете PHP5.1.0, в нём уже есть PEAR 1.4.5) $pear upgrade PEAR Есть проблемы с использованием PEAR? Прочтите главу Running Symfony. Теперь вы можете добавить канал `symfony`: $ pear channel-discover pear.symfony-project.com Теперь вы готовы к установке symfony и всех зависимостей: $ pear install symfony/symfony Если интересует определённая версия: $ pear upgrade symfony/symfony-1.0.11 А так можно проверить установлена ли symfony и посмотреть её версию (-V заглавная) $ symfony -V Если интересны возможности коммандной строки symfony — наберите $symfony -T и увидите список доступных опций. Так же вы можете прочитать Running Symfony и узнать как устанавливается symfony из tgz или репозитория svn. В коммьюнити так же описывается не-PEAR способ установки в symfony wiki.
Установка проекта
В symfony приложения имеющие общие модели данных выносятся в проекты. В проекте «Спросика» будет реализованы backend(админка) и frontend(сам сайт) — это 2 приложения. Проект является основой приложений и должен быть создан первым. Всё что вам нужно это папка проекта и коммандная строка: $ mkdir /home/sfprojects/askeet $ cd /home/sfprojects/askeet $ symfony init-project askeet Пор создать frontend для для symfony: $ symfony init-app frontend Ухты как быстро.
Пользователям Windows настоятельно рекомендуем хранить проекты с путями, не содержащими пробелы.
Установка веб-сервиса
Теперь пришло время внести изменения в конфиг Apache, чтобы сделать проект доступным. Весьма рекомендуется создавать приложение на виртуальном хосте, чем мы и займёмся. откройте файл httpd.conf в вашей папке конфигурации Apache и добавьте следующее: NameVirtualHost 127.0.0.1:80 <VirtualHost 127.0.0.1:80> ServerName askeet DocumentRoot "/home/sfprojects/askeet/web" DirectoryIndex index.php Alias /sf /usr/local/lib/php/data/symfony/web/sf <Directory "/home/sfprojects/askeet/web"> AllowOverride All </Directory> </VirtualHost>
Алиас sf должен указывать на путь к symfony в папке PEAR. Чтобы определить его введите pear config-show. Приложения на Symfony должны иметь доступ к этому каталогу, чтобы использовать некоторые изображение и js файлы для правильного отображения панели дебага и ajax хелперов
В Windows Alias нужно заменить этим: Alias /sf "C:\php\pear\data\symfony\web\sf" Если ничего не работает, возможно стоит добавить права для алиасированной папки /sf. Код ниже из рабочей копии Windows WAMP: NameVirtualHost 127.0.0.1:80
<VirtualHost 127.0.0.1:80> ServerName askeet DocumentRoot "C:/sfprojects/askeet/web" DirectoryIndex index.php Alias /sf "C:/wamp/php/PEAR/data/symfony/web/sf" <Directory "C:/sfprojects/askeet/web"> AllowOverride All Allow from All </Directory> <Directory "C:/wamp/php/PEAR/data/symfony/web/sf"> AllowOverride All Allow from All </Directory> </VirtualHost>
Установка доменного имени
Устанавливаем локально доменное имя askeet. В Linux это делается через файл /etc/hosts. В Windows XP этот файл лежит в C:\WINDOWS\system32\drivers\etc\. Добавьте следующее: 127.0.0.1 askeet Если вы не хотите работать с новым хостом просто измените параметр Listen на другой порт. Так вы сможете и дальше использовать домен localhost.
Потестим новый конфиг?
Рестартаните Apache и зайдите по адресу askeet/ Если вы видите страницу привествия symfony — можем вас поздравить! Для доступа в среду разработчика зайдите по адресу: askeet/frontend_dev.php/ В верхней части страницы вы должны увидеть панель отладки и небольшие иконки, доказывающие что конфигурация верна.
Если у вас /frontend_dev.php/ отображается так же как и /index.php/, то скорей всего где-то ошибка в конфигурации http.conf в районе mod_rewrite. А может и просто нужно сделать symfony cc
IIS
Установка на IIS немного отличается от обычной. Найти способ установки можно в этом уроке.
Subversion
Один из главных принципов ленивых чуваков — не беспокоиться за поломку кода. SVN помогает нам:
быстро работать
вернуться к предущей версии кода, если изменения были не эффективны
работать нескольким человекам в комманде
иметь доступ к ежедневным изменениям.
(данную часть я решил опустить, если всё таки понадобится — переведу)
Ещё увидимся!
Ну вот и прошёл час! Мы говорили и говорили… и… ничего нового не показали будующим приверженцам symfony. Но давайте взглянем на задачи второго дня исследователя symfony:
что делает приложение
создание модели данны и генерация объекто-ориентированного представления