Pull to refresh

Trableshoot для начинающих на Symfony

Всем тем, кому Symfony не поддался с первого раза, или показался «сложноватым». А также для тех, кто как раз собирался попробовать этот замечательный PHP Framework. В данном топике речь пойдет о следующем:
  • Линки на краткий обзор
  • Настройка веб-сервера и PHP для правильной работы с Symfony
  • Выбор варианта установки Symfony
  • Настраиваем переменные окружения
  • Подготавливаем остальные мелочи, чтобы безболезненно начать работать с Symfony


Trableshoot для начинающих на Symfony



Приветствую, дорогие мои люди! Надеюсь этот пост будет полезен многим желающим начать знакомство с замечательным PHP Framework'ом — Symfony. Я не буду пересказывать то, что написано уже до меня, это не интересно. Поэтому если вы ещё не в курсе что такое Symfony, прочитать об этом можно на официальном сайте www.symfony-project.org но сразу новички, особенно не очень понимающие английский, интересуются где же там на русском, быстро прочитать основные возможности Symfony. Действительно, на русском там найти эту информацию не просто, а точнее в «Get Started tutorial» её просто нет, русской версии всмысле. Конечно новичка проще всегда «послать» в гугл, но скорее всего он найдет информацию на русском не на официальном сайте. А на официальном сайте, эта информация всётаки есть в Wiki, а именно http://trac.symfony-project.org/wiki/Documentation/ru_RU/book/1.1/01-Introducing-Symfony

С симфони познакомились, идем далее. А далее я постараюсь собрать все «подводные грабли», на который натыкаются начинающие симфонисты. Первый раз с Symfony я познакомился примерно 3 года назад, тогда было пару проектов на нем, а потом я как-то отошел от программирования вообще. И вот не давно, уже не для работы, а в качестве хобби, появилось желание снова взять этот инструмент в руки, и что-то «насимфонить». Подзабыв все детали, мне пришлось натыкаться на все эти грабли заново. И вот попутно разбираясь с этими граблями, я и пишу эту статью. Вспоминаю вместе с вами…

Начнем наверное классически — Jobeet «День 1: Начало проекта».

Это отличный учебник для начинающий, демонстрирующий создание пошагово реального проекта. К тому же, есть на русском. Линк www.symfony-project.org/jobeet/1_4/Propel/ru/01

Начнем с настройки сервера и установки симфони.
Процесс установки сервера описывать не буду — самое простое решение, для учебных целей — использовать Денвер (denwer.ru)

Денвер скачали, установили, разобрались — качаем сам Symfony. Тут тоже не всё так просто, это вам не .exe скачать. Есть варианты установки: Sandbox, Source, Pear, SVN. Долго объяснять что и зачем, почитайте об этом в документации. Я сразу расскажу как сделать «как надо» и объясню почему.

Надо скачать исходники Symfony и положить в отдельную папку. Исходники можно скачать из source, или из SVN. Если вы уже пользовались svn'ом — можете использовать этот способ, только не делайте checkout из branches, делайте svn import, а то будет куча .svn папок и файлов.
Будем считать цель достигнута — у нас работает денвер и есть где-то отдельно исходники Symfony. В Pear много чего лишнего, имхо. Хотя скорее даже старого, тем не менее, Symfony доступен и через Pear. Sandbox не рекомендую, т.к. придется удалять все то, что там создано для теста. А т.к. я предполагаю, что вы будите создавать свой проект, или хотябы тренироваться по Jobeet, то sandbox вам не нужен.

Далее, сразу добавим в переменную окружения пусть к php.exe, чтобы можно было выполнять команды Symfony из коммандной строки.
Win7: Пуск, пишем там «Система» давим Enter. В окне находим справа «Дополнительные параметры системы», далее на вкладке Дополнительно есть кнопка «Переменные среды». В системных переменных находим переменную Path, жмем Изменить, и в значение ДОБАВЛЯЕМ через точку с запятой новый путь. Если у вас Денвер, то путь примерно такой C:\WebServers\usr\local\php5\ его и добавляем, закрываем всё сохраняя.
Если у вас XP — это где-то в свойствах моего компьютера, комментирующие надеюсь подскажут, т.к. нету у меня под рукой ХР.

Теперь если открыть командную строку и ввести туда «php.exe -v» вы должны увидеть версию пхп. Если же видите кучу ошибок о невозможности загрузить DLL из папки ext — это очередные грабли :) Открываем C:\WebServers\usr\local\php5\php.ini и тщательно исправляем там все пути, а не только у переменной «extension_dir».

На этом настройка денвера ещё не закончена — впереди виртуальные хосты.

Прямо в «День 1: Начало проекта» есть настройка Virtual Host'a. Особым «джентельмистам» (а новичков их большинство) сразу делаю предупреждение: В Denver'e виртуальные хосты создаются автоматически при старте сервера, и разумеется там не прописано всё что нужно для Symfony, а именно

Alias /sf /home/sfprojects/jobeet/lib/vendor/symfony/data/web/sf
<Directory "/home/sfprojects/jobeet/lib/vendor/symfony/data/web/sf">
AllowOverride All
Allow from All


Без этих строчек все будет работать, за исключением оформления, внешнего вида и других элементов Symfony, на которые и создается этот алиас. Чтобы исправить ситуацию нужно прописать настройки VirtualHost самостоятельно, а не использовать то, что сгенерирует Денвер. Открываем файл D:\WebServers\usr\local\apache\conf\vhosts.conf читаем, что там вверху написано и делаем. Переносим блок <VirtualHost... от нужного сайта в httpd.conf (где-то с пятисотой строки смотрите). Переносим — это значит в vhosts.conf блок удаляем, а в httpd.conf его вставляем куда нужно. Далее вспоминаем о конфигурации, которая рекомендуется в Jobeet «День 1: Начало проекта» — тоесть не забываем про DocumentRoot который ссылается на web, не забываем про Alias'ы и другие параметры. Разумеется все пути нужно поставить правильные, а не тупо скопировать пример с сайта.

Если всё сделали правильно, перезапустили сервер, зашли по адресу куда установили Symfony (ну или создали проект Jobeer) — должны выводится поздравления от симфони.

Ну теперь то кажется разобрались с сервером, читаем документацию дальше…
ORM

Не вникая в детали, можно прыгнуть в разные ORM фреймвёрки (почитайте на сайте о них). По умолчанию сейчас Jobbet открывается с Doctrine, но так было не всегда :) К тому же выше я привел ссылку на Jobeet с использованием Propel’a. В мое время Symfony работал только с Propel, и только начинал поддержку Doctrine. Вообщем, сразу обращаем внимание какую ORM мы выбрали. Опять же можно найти массу информации по обеим ORM, и кучу холиваров «Propel VS Doctrine». Что либо навязывать я не собираюсь, скажу лишь то, что начинал я разумеется с Propel (поддержки Doctrine тогда ещё небыло в Symfony). Propel более простой, и как для меня, более читабельный, чем Doctrine. Так что для начала можно использовать именно Propel. А можно и сразу Doctrine, чтобы потом не переучиваться. Doctrine более «монстреобразная» (в ней больше возможностей), а мне и Propel'a хватало, к тому же последняя версия Propel — 1.5, а не 1.4 которая по умолчанию включена в Symfony. И вроде как скоро готова будет 1.6. Выбор ORM я оставлю Вам лично :) Также стоит отметить, что сейчас по умолчанию Symfony настроен использовать Doctrine, это легко меняется, но тем не менее будьте в курсе.

Далее…
Как выполнять все эти команды Symfony в командной строке?

Нужно перейти в папку с созданным проектом (а не в папку Symfony!) и уже оттуда обращаться к symfony.bat. Например так:
Z:
cd Z:\home\job\www
Вызываем батник, получается что-то вроде
Z:\home\job\www>D:\xampp\users\b2b\b2b.hostimvse.ru\www\
symfony.bat plugin:publish-assets

Вроде всё ;) Если все сделано верно, теперь вы без проблем можете изучать уроки по дням учебного проекта Jobeet, работать в коммандной строке с Symfony, вводить команды итд… Правда при создании проекта, тоже есть подобные «подводные грабли», на которые не акцентируется внимание в официальной документации. Наверное из за подобных вещей, при начале изучения Symfony и складывается впечатление, что это что-то сложное. На самом деле это не так. Я постараюсь их описать в следующем моем Trableshoot'e для начинающих, а также затрону тему удобного программирования на Symfony с использованием хорошей IDE PHPEdit.

P.S.

Копирайт на фразу «подводные грабли» принадлежит не мне, а кому-то из хабра. Именно тут я увидел это выражение :) Если сталкивались ещё с какими-то начальными проблемами при работе с Symfony, готов помочь, или даже подредактировать этот топик внеся сюда и вашу ситуацию.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.