Компилировать расширения PHP под Windows нет так уж и просто. Но задача вполне выполнимая.
Все заметки с тегом «PHP»
-
Как скомпилить libevent для PHP под Windows
22 мая 2011
-
PHP, построение URL
20 мая 2011
При работе с разными API (и не только) требуется построить URL. На входе имеем массив параметров имя-значение, на выходе получаем URL. Решение очень простое:
function getUrl($url, $params = array()) { return $url.'&'.http_build_query($params); } // используем так echo getUrl('http://open.mapquestapi.com/nominatim/v1/search?format=json', array('q' => 'Olympiaturm, Spiridon-Louis-Ring 7, München 80809'));
UPD:
http_build_url
. -
Короткий echo в PHP 5.4
19 мая 2011
Похоже, в 5.4 и последующих версиях PHP собираются включить короткий
echo
по умолчанию и сделать его независимым отshort_tags
. Меня лично данное известие радует$username
выглядит гораздо приятнее, чем
echo $username
Единственное, что пока останавливает от повсеместного использования более короткого синтаксиса — необходимость писать продукты под дефолтные конфиги PHP. Хотя, например, в коде этого блога как раз используется короткий
echo
. -
PHP PECL под Windows
7 мая 2011
Если вы работаете с PHP под Windows или просто разрабатываете в Windows, как я, то наверняка вы знакомы со страничкой http://downloads.php.net/pierre/, которая временно-постоянно заменяет PECL для Windows и на которой можно найти свежие билды различных расширений.
Конечно, найти там нужное не так просто, если не знать, что именно вам нужно. Если у вас последние версии PHP (начиная с 5.3.6) для Windows и если вы не собирали их самостоятельно, можно смело игнорировать всё что помечено как
vc6
илиx64
. Далее смотрим,thread safe
ли у вас версия PHP. Если не уверены, то можно посмотреть, имеется ли у васphp5ts.dll
. Если да, версияthread safe
и расширения надо выбирать только с пометкойts
. После этого обычно остаётся пара вариантов: стабильная версия и собранные из текущего svn/cvs кода.С некоторыми расширениями, конечно, приходится повозиться. Например, APC. После очевидного отбора остаётся прилично вариантов:
- php_apc-20110109-5.3-vc9-x86.zip
- apc-igbinary-fastlz-snap20110301-5.3-ts-vc9-x86.zip
- php_apc-3.1.8-dev-+igbinary-1.1.2-dev-5.3-ts-vc9-x86.zip
- php_apc-3.1-5.3-svn20101116-vc9-x86.zip
- php_apc-3.1.5-5.3-vc9-x86.zip
Мне было некогда разбираться, взял первый попавшийся
php_apc-20110109-5.3-vc9-x86.zip
и пару дней мучался с тем, что сервер время от времени просто переставал отвечать на запросы. Потом, методом исключения, нашёл виновника и проверил все остальные варианты:- php_apc-20110109-5.3-vc9-x86.zip — время от времени вешается.
- apc-igbinary-fastlz-snap20110301-5.3-ts-vc9-x86.zip — сразу рушит апач.
- php_apc-3.1.8-dev-+igbinary-1.1.2-dev-5.3-ts-vc9-x86.zip — стабильно.
- php_apc-3.1-5.3-svn20101116-vc9-x86.zip — стабильно, но есть 3.1.5.
- php_apc-3.1.5-5.3-vc9-x86.zip — стабильно, но есть 3.1.8.
т.к. 3.1.8 оказалась вполне стабильной, остановился на ней. Кстати, внутри там:
- php_apc-win7.dll — для Windows 7.
- php_apc-xp.dll — для XP.
- php_igbinary.dll — альтернативный сериализатор. Штука хорошая, но что он делает в архиве с APC я немного не понял.
-
PhpStorm 2.1 EAP build 107.21
29 апреля 2011
Уже давно не писал про EAP PhpStorm потому как просто не успевал. Уж очень шустро он развивается. А произошло действительно много всего.
Во-первых был выпущен апдейт 2.0.1, в котором мне лично понравилось, кроме всего остального, следующее:
- Добавили рефакторинг «Introduce Constant».
- Наконец, IDE стала сообщать, что у нас в проекте несколько одноимённых классов и автодополнению плохо. Лучше бы, конечно, дополняло как NetBeans, из всех, но и это уже очень хорошо.
Через некоторое время возобновилась EAP:
- Добавили рефакторинг «Extract function/method».
- Прилично улучшили инспекции.
- В CSS стали автодополняться недавно использованные цвета, что очень сильно экономит время.
- Добавили удобный способ исключить файл из индекса.
- Добавили поддержку
.htaccess
. - Добавили удобную подсветку вложенных блоков в HTML.
- Добавили поддержку Phing.
Ну и свежий EAP тоже порадовал. Особенно:
- Теперь стало возможно делать diff для директорий. Похоже, скоро можно будет избавиться от отдельного внешнего инструмента.
- Улучшили навигацию по конструктору и поиск использования класса.
От практики обновления EAP-билдов автоматически, похоже отказались, поэтому установить придётся самостоятельно.
-
Сообщения об ошибках и хороший код
17 апреля 2011
Как ни странно, очень многие разработчики пренебрегают более строгими режимами работы тех же PHP и MySQL. Странно это, прежде всего, потому, что включение таких режимов позволяет получать больше информации о потенциальных ошибках в коде и, соответственно писать код лучше.
В PHP самый строгий уровень ошибок можно получить записав в php.ini:
error_reporting = -1
Это позволяет выявить такие слабые места, как, например, использование переменных без их объявления. Да и банальные описки выявляются сразу, а не после пары часов жёсткого дебага.
В MySQL тоже есть строгий режим, который не позволяет, например, вставить строку длиной в 200 символов в поле
varchar(20)
. В «умолчательном» режиме MySQL молча вставит первые 20 символов, выкинув остальные. В строгом — получим соответствующую ошибку. Включается этот режим черезmy.cnf
:[mysqld] sql-mode = "STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE"
Все значения
sql-mode
можно подсмотреть в официальной документации. -
Какой PHP фреймворк вы используете и почему?
23 марта 2011
На хабре появился довольно интересный опрос с обсуждением на горячую тему. Ответы немного удивили:
- Yii на втором месте после Zend Framework. Думал, там будет Symfony или CodeIgniter.
- Очень многие выбрали «самописный фреймворк». Дело, конечно, хорошее. Опыт наберётся быстро. Но для работодателя коммерчески невыгодно. Конечно, если задачи очень специфичны, вроде создания игр, то свой фреймворк может быть оправданным решением.
- Подавляющее большинство «пишет на PHP, но не использует фреймворки». То ли лапшекодеров на хабре много, то ли все делают игры… не ясно.
-
PHP RFC: встроенный вебсервер
3 марта 2011
В RFC PHP попала новая идея: встроенный вебсервер. Штука определённо замечательная: можно будет разрабатывать не запуская тот же Apache и не занимаясь его настройкой. Пока реакция разработчиков положительная, поэтому можно надеяться, что нововведение будет в ядре.
Запускать это дело предлагается очень просто:
php -S localhost:8000 docroot
При этом можно использовать роутинг-скрипт, заменяющий, например mod_rewrite и выглядящий так:
if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"])) return false; // отдаём как есть else ...
К странице в wiki прилагается патч, так что любопытные могут собрать PHP из исходников и попробовать нововведение.
-
Комментарии в разметке
25 февраля 2011
Иногда в HTML встречаются комментарии, не особо предназначенные для посторонних глаз или просто лишние. В лучшем случае это:
<!--news list start--> туча кода <!--news list end-->
Конечно, можно их просто удалить, но такие комментарии всё-таки полезны разработчику. Поэтому, вместо удаления лучше сделать их средствами серверного языка:
// news list start туча кода <?php // news list end
или
<%-- news list start --%> туча кода <%-- news list end --%>
-
PhpStorm 2
15 февраля 2011
Вышел второй релиз отличной IDE для PHP, направленный, прежде всего на поддержку современных языков и технологий.
- Полная поддержка PHP 5.3 с пространствами имён и замыканиями.
- Поддержка Zend Debugger. При этом его не нужно настраивать.
- Командная строка с поддержкой Zend_Tool и Symfony в комплекте.
- Редактор SQL-запросов с возможностью их запуска, а также просмотра и изменения данных результата.
- Поддержка ECMAScript 5 «use strict».
- Поддержка LESS и SASS/SCSS.
- Relax NG для XML.
- Поддержка Mercurial.
- Интеграция с трекерами GitHub, PivotalTracker и RedMine.
Новый интерфейс для всех платформ.
- Наиболее значимые изменения в картинках и видео
- Пробуем и обновляемся