Showing posts with label php. Show all posts
Showing posts with label php. Show all posts

Saturday, July 28, 2012

PHP для бабушек. Ставим Symfony.


Что такое Symfony? 
Клевый ответ на этот вопрос на сайте разработчиков: "Symfony - это PHP Web Development framework. Что тут неясно? А если неясно, то проще считай, что это религия!" (framework + philosophy+comunity)
Не веришь? Можешь сам перевести отсюда http://symfony.com/what-is-symfony :)

Попробую пройти "обряд крещения". Как обычно расписано по шагам для старичков с хреновой памятью типа меня :)
Вот инструкция по установке и использованию. Я просто следовал ей.

Я проделывал это на двух компах, у которых путь установки проекта отличается именем замапленного диска. Отсюда и разные пути в тексте и скриншотах.

1. Установка

Модный способ - через композер. Как поставить композер, описано здесь.
В рутовой папке проекта (у меня это w:\home\calculator\www) запустить такое  (я запускал из гитового баша как обычно):

php composer.phar create-project symfony/framework-standard-edition Symfony/

Нифига не заработало на домашнем компе, но заработало на рабочем. Поэтому следующий вариант такой:

Скачиваю отсюда http://symfony.com/download Symfony Standart и распаковываю в рутовую папку. В руте у меня появится папка Symfony
w\
|-calculator
  |-www
    |-Symfony



Запускаю в папочке w:\calculator\www\Symfony (с баш строки как обычно)
php bin/vendors install

далее идет непериводимая игра слов выдаваемых скриптом и гитом.
Появилась папочка vendor. Сюда Symfony понапихивало массу полезностей.
Все эти полезности описаны в файлике Symfony\deps. На 11м слайде презенташки можно увидеть как он выглядит.

Проверяю. Открываю в браузере * http://www.calculator/Symfony/web/config.php. Вижу страничку конфига.
* www.calculator я добавил в файл Windows\System32\drivers\etc\hosts. Подробнее здесь.


Тут он мне предлагает поделать всякие усовершенствования типа поставить акселератор, что-то поменять в php.ini. Естественно забиваю на эти сообщения - они мне жить пока не мешают.



2. Создаю свое приложение.

Тут я перепрыгнул на слайд 32. Сначала хочу создать приложение, а потом залить его в git.

Создаю бандл
в папке Symfony запускаю php app/console generate:bundle

Ввожу имя нейпспейса (Tdd/CalculatorBundle) и имя бандла (Calculator).

Дальше куча вопросов, на которые просто жимаю <Enter>

Бандл - это директория со всем, что нужно для фичи. Вот такое мне сгенерилось:


3. Смотрим на тесты

Генератор бандлов также создал папку с тестами

В ней находится один тест на контроллер

Запустить этот тест вместе со сьютом можно из корневой папки Symfony. Запускаю команду
phpunit -c app/
 параметр -c указывает конфигурационный файл для phpunit.

Почему надо запускать тесты с опцией -c?
Тест на контроллер создает и запускает симфонийский кернел со всеми зависимостями. В файле app/phpunit.xml.dist есть ссылка на bootstrap, который делает предварительную инициализацию окружения. 


Настройки Netbeans для запуска тестов
Чтобы мои тесты запускались прямо в Netbeans я сделал следующее:
- Указал где лежат тесты (окно Project properties, пункт Sources)

- Выбрал phpunit.xml.dist в качестеве XML Configuration для тестов (окно Project properties, пункт PHPUnit)

Теперь мои тесты запускаются также из ИДЕ:


Friday, July 20, 2012

Ставим Pear руками


Хотел поставить Pear по своей инструкции, но в последнем расширении Денвера почему-то нет go-phear.bat. Поэтому пришлось искать альтернативные варианты поиска

1. Скачал go-pear.phar в папку W:\usr\local\php5\PEAR
curl http://pear.php.net/go-pear.phar > go-pear.phar


2. В папке W:\usr\local\php5\PEAR запускаю командуphp -d phar.require_hash=0 go-pear.phar


3. Дальше жму везде ENTER. Много сообщений о том, что что-то инсталлится

4. Потом спросило не хочу ли я проапдейтить php.ini <Y>

5. Установщик подготовил файлик PEARPEAR_ENV.reg, который я внес в реестр

6. Но путь к PEAR все равно пришлось прописать в переменной окружения Path

PhpStorm. Настраиваем IDE и Debug


Недавно нас с Сашей попросили провести тренинг по ТДД на PHP. Следовательно, возникла необходимость срочно ознакомиться с PHP, попробовать разные фреймворки для юнит тестов, моки и т.д. В общем, поделать что-то. Netbeans – классная ИДЕ для ПХП, но я уверен, что PHPStorm лучше и я разберусь с пхп быстрее в нем, хоть он и платный. А evaluation периода мне хватит, т.к. тренинг через 3 недели J

С установкой проблем никаких. Идем сюда https://www.jetbrains.com/phpstorm/download/, скачиваем и ставим.

Чтобы не париться я поставил Денвер. Как это делается, я уже описывал в этом посте.

Не помню откуда я взял это, но здесь https://github.com/DragonBe/zftest  чувак выложил тестовое приложение на пхп с примерами юнит тестов. То, что надо. Клонирую репозиторий git отсюда git://github.com/DragonBe/zftest.git в папочку D:\workspace\projects\php\zftest.

В PhpStorm создаю новый проект

Дальше нужно сказать IDE где установлен PHP. В окне настроек PHP (File->Settings->PHP) ввожу такой путь к PHP : W:\usr\local\php5. W - диск, на который замаунтил денвер.

Немного паники вызвала ошибка "PHP Startup: Unable to load dynamic library", которая вываливалась несколько раз. Но пофиксилось просто:

Открываем файлик php.ini в W:\usr\local\php5 и находим строчку, где указывается extension_dir. У меня она выглядела вот так:

Поменял на нормальный виндовый путь:

И нажал кнопочку "Reload" в настройках PHP.

Дальше попробовал запустить юнит тесты

И получил такой результат:

О том, как поставить PHPUnit я уже писал здесь

А проблему с дебагом пофиксил таким же способом, как и проблему загрузки dll-ек при конфигурации проекта. Т.е. открыл файлик php.ini, нашел настройки xdebug:

и изменил путь на вменяемый:

Monday, July 09, 2012

Выбираю IDE для PHP или Netbeans не так уж и мертв.

Я верю, что самая классная IDE – это PHPStorm. Потому что эта та же IntelliJ IDEA, только для PHP. Но поскольку эта IDE платная, а методы бесплатного ее использования я публиковать не хочу, то я остановился на NetBeans.


Установка и настройка проекта на PHP в NetBeans 7.1

  1. Идем сюда http://netbeans.org/downloads/index.html, выбираем столбик с PHP и качаем
  2. Создаем новый проект (File->New Project).

    Напомню, что структура проекта такая:
    spairing
    |-www
    |-tests
  3. Указываем Source folder (z:\home\spairing)
  4. В Run Configuration меняем Project URL (http://www.spairing) и указываем Index file (www/index.php)
  5. Открываем File->Project properties, устанавливаем Web Root (www). Значок возле каталога www поменялся

    Значок возле каталога www должен поменяться
     
  6. Теперь можем запустить index.php, правой кнопкой мыши на файле и выбрать Run. Запустится браузер, в нем откроется страничка.
  7. Укажем путь где будут лежать юнит тесты
  8. Создам новый класс Profile.
  9. Теперь правой кнопкой мыши на папке Source folder и сгенерим юнит тесты:
  10. По идее в тестовых сорцах должен создаться юнит тест ProfileTest
  11. В сгенерированном тесте ProfileTest добавлю тест
  12. И запущу тесты (если с клавиатуры, то <Alt>+F6)

    Теперь можно начинать колбасить тесты и код.
  13. Ради интереса запущу этот тест из командной строки (команда phpunit ProfileTest.php из директории с тестовым файлом)

Можно начинать колбасить код! :)

Устанавливаем PHPUnit

Инструкция по установке PHPUnit взята отсюда: http://www.phpunit.de/manual/3.0/en/installation.html

Напомню, что все эти операции я проводил на Denwer с версией пхп 5.3.3. Корневая папочка  Денвера замаплена на диск Z:

Итак, чтобы поставить PHPUnit нужно

  1. Убедиться, что установлен Pear. Как его устанавливать я описывал здесь.
  2. Добавить channel, откуда будет установлен пакет PHPUnit:
    pear channel-discover pear.phpunit.de
  3. Добавить channel pear.symfony-project.com (нужен для зависимых модулей)
  4. Собственно, установить PHPUnit командой
    pear install phpunit/PHPUnit
    На ошибку загрузки опциональных зависимостей забиваем.
Дальше буду определяться с IDE и в ней уже создам пару тестов...

Устанавливаем PEAR

Дословный перевод определения PEAR, взятого отсюда http://pear.php.net определения что такое PEAR:
PEAR - это фреймворк и система распределения реюзабельных PHP компонент (PEAR is a framework and distribution system for reusable PHP components)
Pear - это как Setuptools или PIP в питоне.

Ставлю Pear


    1. Поскольку у меня Денвер, то сначала я скачал пакет расширений отсюда  http://www.denwer.ru/packages/php5.html и установил его. 
    2. Этот файл http://pear.php.net/go-pear.phar скачиваем в папку Z:\usr\local\php5\PEAR. Z - это диск, на который я замапил установленную дистрибуцию денвера (см. предидущий пост по установке)

    3. В папке с инсталляцией php запускаем go-pear.bat, на все вопросы жмем Enter.Если нету go-pear.bat, то здесь описан вариант установки руками:  http://szelenin.blogspot.com/2012/07/pear_20.html
    4. На дурацкий вопрос отвечаем Y и подтверждаем еще раз <Enter>  5. Все, pear установлен. Следуя рекомендациям внесем изменения в реестр из сгенерированного файла: 6. У меня внести не получилось, поэтому все переменные из z:\usr\local\php5\PEAR_ENV.reg я внес руками.

    Проверь правильность установки, это ВАЖНО:

      7. PHP_PEAR_PHP_BIN должна содержать полный путь к исполняемому php файлу, то есть к Z:\usr\local\php5\php.exe
       
      8. Директорию Z:\usr\local\php5 нужно добавить в переменную окружения PATH.

Проверка правильности установки Pear


Переходим на диск Z: и запускаем команду pear version. Если видим нечто подобное, значит pear возможно все-таки установлен. 
Чтобы полностью убедиться в правильности устнановки можно выполнить инструкции, описанные здесь
http://pear.php.net/manual/en/installation.checking.php