Всем тем, кому Symfony не поддался с первого раза, или показался «сложноватым». А также для тех, кто как раз собирался попробовать этот замечательный PHP Framework. В данном топике речь пойдет о следующем:
Приветствую, дорогие мои люди! Надеюсь этот пост будет полезен многим желающим начать знакомство с замечательным 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 года назад, тогда было пару проектов на нем, а потом я как-то отошел от программирования вообще. И вот не давно, уже не для работы, а в качестве хобби, появилось желание снова взять этот инструмент в руки, и что-то «насимфонить». Подзабыв все детали, мне пришлось натыкаться на все эти грабли заново. И вот попутно разбираясь с этими граблями, я и пишу эту статью. Вспоминаю вместе с вами…
Это отличный учебник для начинающий, демонстрирующий создание пошагово реального проекта. К тому же, есть на русском. Линк 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, а именно
Без этих строчек все будет работать, за исключением оформления, внешнего вида и других элементов 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 фреймвёрки (почитайте на сайте о них). По умолчанию сейчас 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.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.
Копирайт на фразу «подводные грабли» принадлежит не мне, а кому-то из хабра. Именно тут я увидел это выражение :) Если сталкивались ещё с какими-то начальными проблемами при работе с Symfony, готов помочь, или даже подредактировать этот топик внеся сюда и вашу ситуацию.
- Линки на краткий обзор
- Настройка веб-сервера и 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, готов помочь, или даже подредактировать этот топик внеся сюда и вашу ситуацию.