Category Archives: php
PHP-Подкасты
http://www.phppodcasts.com/
Работа с XML-данными в php
Если на сервере стоит версия php >= 5.0 (а сложно представить другое;)), то удобнее всего пользоваться классом SimpleXML. Здесь я опишу работу с ним. Создание объекта 2 основных способа — через конструктор и через factory-функцию simplexml_load_string. Второй способ лучше тем, что при ошибке создания объекта вернёт false. Правда, при этом будет выдавать E_WARNING, что не …
Curl в php
cURL — это свободная кроссплатформенная служебная программа командной строки для передачи файлов по различным протоколам с синтаксом URL. Использование cURL в php При использовании под Windows лучше для надёжности скопировать файлы libeay32.dll и ssleay32.dll из папки с php в system32. Представляет собой (не знаю, как всё устроено внутри, но как выглядит «наружу») объект, который инициализируется …
Функция header в php
Заголовки на скачивание файла коротко описаны здесь — https://blog.bullgare.com/2010/01/%d0%b7%d0%b0%d0%b3%d0%be%d0%bb%d0%be%d0%b2%d0%ba%d0%b8-%d0%bd%d0%b0-%d1%81%d0%ba%d0%b0%d1%87%d0%b8%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d1%84%d0%b0%d0%b9%d0%bb%d0%b0/ Функция header в php используется для посылки HTTP-заголовков (почитать на w3.org).
Установка Nginx, PHP, PHP-FPM и MySQL под Windows через Cygwin
Статья по установке, ещё одна (только nginx) что такое Cygwin что такое php-fpm Забавно то, что при ребилде php постоянно вылазили ошибки с доступом. Как потом случайно удалось выяснить, дело было в Avira AntiVir.
Ресурсы по PHP на сайте IBM
Изучаем PHP, Часть 1: Страница регистрации, формы и взаимодействие с базой данных Изучаем PHP, Часть 2: Загрузка файлов на сервер и использование XML для хранения информации о файлах Изучаем PHP, Часть3: Аутентификация, работа с потоками данных, объекты и исключения Техническая библиотека
Стандарт кодирования на PHP, рекомендуемый Zend Framework
http://zendframework.com/manual/ru/coding-standard.html
Профилирование php-проекта: Xdebug
Установка Скачать После помещения библиотеки в папку с расширениями в php.ini надо написать
1 |
zend_extension = <путь-к-php>\ext\php_xdebug.dll |
Далее ставим плагин для firefox — Xdebug Helper, настройка всего инструментария — в базе знаний Google Работа с Xdebug под Eclipse ещё про установку и настройку xdebug, Профилирование с Xdebug на habrahabr. Самое основное — параметр в php.ini
1 |
xdebug.profiler_enable_trigger=On |
В итоге …
Установка и использование PHPUnit в Windows
Сначала устанавливаем PEAR. Далее нужно зарегистрировать каналы
1 2 3 |
путь-к-php\pear channel-discover pear.phpunit.de pear channel-discover components.ez.no pear channel-discover pear.symfony-project.com |
Теперь можно установить PHPUnit
1 |
путь-к-php\pear install phpunit/PHPUnit |
При этом может поругаться на версию PEAR. Надо обновить — см. заметку по установке PEAR. Если не получилось установить с помощью PEAR. После этого нужно писать тесты. Подойдёт что-то вроде ModelAdv.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
<? //инициализация - можно вынести в отдельный файл $_SERVER['HTTP_HOST'] = 'my_project'; $_SERVER['REQUEST_METHOD'] = 'GET'; $_SERVER['QUERY_STRING'] = ''; //возникают ошибки, т.к. не все серверные переменные установлены ini_set('display_errors','off'); error_reporting(E_ERROR); require_once ('S:/wamp/www/moikompas/htdocs/init.php'); ini_set('display_errors','on'); error_reporting(E_ALL); ini_set('include_path', ini_get('include_path') . ';путь-к-проекту;путь-к-PEAR;.'); require_once 'PHPUnit/Framework.php'; echo "--started--\n"; //--инициализация /* //это для тестирования контроллера - для задания всех его свойств cfg::init('/groups/test/'); //здесь идёт передача управления контроллеру. //вывод нам не нужен ob_start(); require_once ('htdocs/index.php'); ob_clean();*/ //загружаем тестируемый класс (если нет автозагрузки) load::c('adv'); //собственно сами тесты class AdvTest extends PHPUnit_Framework_TestCase { public function test_renderOpenxBannerOnPage() { $params = array ( array (//всё правильно 'in' => array ('category' => 'biznes', 'place' => 'modules_top'), 'out' => array ('zoneid' => 74, 'n' => 'a1ebea39') ), array (//всё правильно - вернуть умолчание 'in' => array ('category' => 'biznes', 'place' => 'modules_middle'), 'out' => array ('zoneid' => 2, 'n' => 'a159618f') ), array (//неверная категория - вернуть умолчание 'in' => array ('category' => 'biznes1', 'place' => 'modules_top'), 'out' => array ('zoneid' => 73, 'n' => 'ae343b6d') ), array (//неверное место показа - вернуть '' 'in' => array ('category' => 'biznes', 'place' => 'modules_to'), 'out' => '' ), array (//неверная категория и место показа - вернуть '' 'in' => array ('category' => 'biznes12', 'place' => 'modules_to'), 'out' => '' ), ); foreach ($params as $par) { $out = adv::renderOpenxBannerOnPage($par['in']['category'], $par['in']['place'], true); $this->assertEquals($out, $par['out']); } } public function test_renderOpenxBannerByParams() { $params = array ( array (//всё правильно 'in' => array ('bannerpage' => 'compas', 'place' => 'top', 'category' => 'biznes'), 'out' => array ('zoneid' => 45, 'n' => 'ae7d79d4') ), array (//всё правильно 'in' => array ('bannerpage' => 'compas', 'place' => 'right', 'category' => 'razvlecheniya'), 'out' => array ('zoneid' => 29, 'n' => 'a14675ed') ), array (//всё правильно 'in' => array ('bannerpage' => 'index', 'place' => 'right', 'category' => null), 'out' => array ('zoneid' => 7, 'n' => 'a2a070c5') ), array (//всё правильно - вернуть умолчание 'in' => array ('bannerpage' => 'index', 'place' => 'top', 'category' => 'biznes'), 'out' => array ('zoneid' => 5, 'n' => 'abff2e70') ), array (//страница компаса, неверная категория - вернуть умолчание 'in' => array ('bannerpage' => 'compas', 'place' => 'top', 'category' => ''), 'out' => array ('zoneid' => 44, 'n' => 'abf29464') ), array (//неверное место показа - вернуть '' 'in' => array ('bannerpage' => 'index', 'place' => '', 'category' => 'biznes'), 'out' => '' ), ); foreach ($params as $par) { $out = adv::renderOpenxBannerByParams($par['in']['bannerpage'], $par['in']['place'], $par['in']['category'], true); //var_dump($out); $this->assertEquals($par['out'], $out); } } } ?> |
Запускать из папки с исполняемыми файлами php (где php.exe):
1 |
phpunit.bat путь-к-папке-tests\ModelAdv.php |
…
Установка PEAR под Windows
Установка PEAR под Windows
1 |
путь-к-php\go-pear.bat |
лично у меня работать не захотело (php5.3), пока не изменил bat-файл на следующий:
1 2 3 4 5 |
@ECHO OFF set PHP_BIN=php.exe %PHP_BIN% -d output_buffering=0 -d phar.require_hash=0 PEAR\go-pear.phar pause |
после этого для установки переменных окружения (если это нужно):
1 |
путь-к-php\PEAR_ENV.reg |
или добавить путь-к-php в переменную PATH. Может понадобиться обновить PEAR:
1 |
путь-к-php\pear upgrade PEAR |