"Practical symfony" is part of the official symfony documentation.
День 1: Начало проекта
День 2: Собственно проект
День 3: Модель данных.
День 4: Вид и контроллер
День 5: Маршрутизация
День 6: Модель в подробностях.
День 7: Категории
День 8: Модульное тестирование
День 9: Функциональное тестирование
День 10: Формы
День 11: Тестирование форм
День 12: Генератор админки
День 13: Пользователь
День 14: Свободный день
День 15: Ленты
День 16: Веб-сервисы
День 17: Поиск
День 18: AJAX
День 19: Интернационализация и Локализация
День 20: Плагины
День 21: Дизайн
День 22: Кэш
День 23: Развертывание приложения (deployment)
День 24: Другой взгляд на Symfony
/jobeet/1_2/Propel/ru/A-License
Вступление
Фреймворк symfony был Open-Source проектом на протяжении трёх лет и стал одним из самых популярных фреймворков, благодаря своим возможностям и великолепной документации. Эта традиция зародилась давным-давно.
В декабре 2005, сразу после первого официального релиза symfony, мы опубликовали учебник Askeet, набор из 24 уроков, публикуемых ежедневно между началом декабря и рождеством.
Данный учебник стал бесценным инструментом для донесения фреймворка новым адептам. Огромное количество разработчиков научились работать с symfony благодапя askeet, и до сих пор большинство компаний используют askeet как учебный материал.
Мы празднуем выход symfony 1.2 и учебник askeet стал уже староват. Пришло время для нового, свежего учебника!.
Знакомьтесь, Jobeet, учебник-календарь 2008!
Вызов
Всё верно, мы сделаем это вновь. Каждый день, в том числе и в выходные, будет публиковаться новая глава учебника. На каждый урок не должно уходить более одного часа и станет тем нечто, при помощи которого можно будет создать настоящий вебсайт, от начала и до конца.
24 раза по одному часу - это одни полные сутки, и это тот максимум, который, как мы считаем нужно потратить на изучений основ symfony. Каждый день бы будем добавлять новые вещи в наше приложение. Мы также познакомим вас с новыми функциями symfony и дадим хорошую практику для веб-разрабочика.
В askeet 21ый день был "найми-гуру-симфони-на-день". В этот день ничего не планировалось и мы лишь принимали предложения по внесению различных фич в askeet. Это был успех, и сообщество решило, что нам нужен поисковый движок в данном приложении И мы его сделали. День 21 учебника был одним из самых популярных.
А в Jobeet, мы будем праздновать на 21ый день зимы "День дизайнера". После четвёртого дня, у вас буде вся необходимая информция по HTML и CSS и вы сможете создать дизайн для публичного релиза Jobeet. Так что, если вы работаете дизайнером и ваша компании имеет отдел дизайна, то мы сможете поделиться с нами дизайном. В 21ый день, мы создадим опросник и сообщество должно будет определить стандартный дизайн, с которым будет поставляться Jobeet. Конечно же вас внесут в список разрабочиков и получите славу!
А этот учебник какой-то не такой
Окунёмся в прошлое и вспомним php4 О-ла-ла, Belle Epoque! PHP был один из первых языков, направленных на веб и самых простым в изучении.
Но так как веб технологии эволюционируют с каждым днём, веб разрабочики должны быть близки к последним практическим вещам и инструментам. Самый лучший способ не отстать - читать блоги, учебники, книги. Мы уже достаточно прочитали всего этого, независимо от того, написаны ли они для PHP, Python, Java, Ruby или Perl, но многим из них очень не хватает примеров кода - их слишком уж мало.
Наверное вы читали подобное предупреждение:
"Не забудьте добавить валидацию и проверки на ошибки в реальном приложении."
или
"Безопасность отдаётся на личное изучение читателя"
или
"Конечно вам придётся писать тесты"
Чаво? Эти вещи вам не игрушка. Да это, возможно, наиважнейшая часть всего исходного кода!. И как читателя вас оставляют наедине с собой. Без понимания данных принципов примеры куда более бесполезны. Их нельзя использовать как точку отсчёта. И это плохо! Почему? Потому что безопасность, валидация и управление ошибками, а так же тесты (и это ещё не всё) приведут вас к верному коду!
В данном учебнике вы никогда не увидите подобные изречения и мы будем писать тесты, обрабатывать ошибки, валидировать код и мы будет уверены в том что создаём защищённое приложение. Symfony это не просто код, но ещё и отличная практика для тех, кто создаёт профессиональные веб-приложения для предприятий. Мы сможет предоставить наивысший комфорт, т.к. symfony вобрал в себя все необходимые инструменты для программирования данных аспектов: легко и без создания тонн кода.
Валидация, управление ошибками, безопасность и тесты - это главные жители symfony, так что у нас не уйдёт на объяснение всего этого много времени. Это лишь одна из многих причин, почему стоит использовать фреймворк для "живых" проектов.
Весь код, которые вы здесь увидите, вы можете использовать для реального проекта. Не бойтесь копировать и вставлять кусочки кода или воровать целые его цепочки.
The Проджект
Новым разрабатываемым приложением мог стать опять какой-нибудь блоговый движок. Но хочется использовать symfony в полезном проекте. Наша цель - показать, что symfony может использоваться для разработки профессиональных приложений со стилем, приложив немного усилий.
Содрежимое следующего дня оставим пока в тайне. Сегодя у нас и так много дел. Тем не менее вы уже знакомы с именем приложения: Jobeet.
Что у нас на сегодня?
24 часа это огромное количество времени для разработки приложения на symfony. Сегодня PHP код мы писать не будем. Но и без единой строки кода вы сможете уловить все прелести использования фреймворков, таких как symfony, всего лишь развернув новый проект.
Целями дня является: создать среду разработки и отобразить страницу приложения в браузере. Это включает в себя установку symfony, создание приложения и конфигурация веб-сервера.
Требования
Для начала убедитесь, что у вас уже есть готовая среда для разработки с веб-сервером (например Apache), базой данных (MySQL, PostgreSQL, или SQLite) и PHP 5.2.4 или позднее на борту.
Раз нам придётся часто использовать командную строку, то лучше использовать Unix-like ОС, но если вы работаете под Windows - всё будет работать отлично, просто придётся ввести несколько команд в cmd.
Консольные команды Unix могут весьма пригодиться в среде Windows. Если вы хотите использовать такие инструменты как tar, gzip или grep на Windows, то вы можете установить Cygwin. Официальная документация немного размазана, так что более понятный вариант можно найти тут. Исследователи так же могут попробовать Windows Services for Unix.
Так как данный учебник по большей части фокусируется на фреймворке symfony, то мы смеем предположить что у вас уже есть базовые знания по PHP и Объекто-ориентированному программированию
Установка Symfony
Для начала откройте директорию, в которой будет расположен проект Jobeet:
$ mkdir -p /home/sfprojects/jobeet
$ cd /home/sfprojects/jobeet
На Windows:
c:\> mkdir c:\development\sfprojects\jobeet
c:\> cd c:\development\sfprojects\jobeet
Пользователям Windows рекомендуется устанавливать symfony в путь, не содержащий пробелов. Старайтесь не использовать папку Documents and Settings а так же папки типа My Documents
Создайте каталог, в которой будут храниться библиотечные файлы symfony:
$ mkdir -p lib/vendor
Чтобы установить Symfony скачайте архив, лежащий на сайте symfony. Раз данный учебник написан под symfony 1.2, то стоит скачать самую свежую стабильную версию.
Под разделом "Source Download", вы найдёте .tgz архив или же архив в формате .zip. Скачайте архив в свежесозданный каталог lib/vendor и распакуйте его:
$ cd lib/vendor
$ tar zxpf symfony-1.2-latest.tgz
$ mv symfony-1.2.0 symfony
Под Windows разарзивация может быть сделана через обозреватель. После того как вы переименуете каталог в symfony, там вы должны будете увидеть c:\development\sfprojects\jobeet\lib\vendor\symfony.
Конфигурация php может отличаться в различных дистрибутивах, поэтому нам необходимо быть уверенным, что конфигурация PHP имеет необходимые минимальные требование symfony. Запустите проверку конфигурации при помощи скрипта, поставляемым с symfony:
$ cd ../..
$ php lib/vendor/symfony/data/bin/check_configuration.php
Если нашлись проблемы, на выходые мы получим подсказки по их исправлениям. Так же стоит запустить проверку из браузера, т.к. конфигурация PHP может отличаться. Скопируйте файл в корневой каталог веб-сервера и запустите файл. Не забудьте удалить файл из корня после этого.
Проверьте правильность установки symfony через командную строку (обратите внимание на заглавную V):
$ php lib/vendor/symfony/data/bin/symfony -V
На Windows:
c:\> cd ..\..
c:\> php lib\vendor\symfony\data\bin\symfony -V
Если вам не терпится узнать что же может эта командная строка, вы можете попросить symfony показать список доступных задач и опций:
$ php lib/vendor/symfony/data/bin/symfony
Под Windows:
c:\> php lib\vendor\symfony\data\bin\symfony
Командная строка symfony - лучший друг веб-разработчика. Он несёт в себе множество функций, которые могут ускорить вашу производительность за счёт таких ежедневных задач как очистка кеша, генерация кода и многое другое.
Project Setup
В symfony, приложения(applications), имеющие общую модель данных группируются в проекты (projects). Для проекта Jobeet, мы создадим 2 приложения: frontend и backend.
Создание проекта
Из каталога jobeet запустите symfony задачу generate:project, для того чтобы создать проект:
$ php lib/vendor/symfony/data/bin/symfony generate:project jobeet
Под Windows:
c:\> php lib\vendor\symfony\data\bin\symfony generate:project jobeet
Задача generate:project создаёт стандартную структуру каталогов и файлов, необходимых для приложения:
Каталог
|
Описание
|
apps/
|
Содержит все приложения проекта
|
cache/
|
Кэш фреймворка
|
config/
|
Конфиг файлы фреймворка
|
lib/
|
Библиотеки и классы проекта
|
log/
|
Логи фреймворка
|
plugins/
|
Установленные плагины
|
test/
|
Файлы для юнит и функционального тестирования
|
web/
|
Корневая папка с веб-файлами
|
Почему symfony создаёт столь много файлов? Главным преимуществом фреймворка является его стандартизация. Благодаря стандартной структуре файлов и папок symfony, любой программист с небольшими знаниями по symfony сможет осуществлять поддержку проекта. За считанные минуты он сможет погрузиться в код, начать править ошибки и добавлять новый функционал.
Задача generate:project так же создала ярлык symfony в корневом каталоге проекта Jobeet для уменьшения количества символов, набираемых для запуска задачи.
Отныне, вместо того чтобы писать полный буть, мы будет пользоваться ярлыком symfony.
|