Обновить
64K+

PHP *

Скриптовый язык общего назначения

78,32
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

PHP + Twitter

Время на прочтение2 мин
Охват и читатели2.3K
Twitter сейчас бурно развивается и на то были причины, есть в нем хорошие функции, которые можно использовать и в своих проектах.

На Хабре есть фишка связанная с ним, если в профиле ввести свой Twit-аккаунт, то последнее сообщение будет стоять у вас в статусе — мелочь, а приятно, не нужно делать одно и тоже дважды.

Второй пример, который стал причиной моего углубления в этот вопрос, — это проект, мы его еще не запустили, но как всегда сделали заглушку с формой для сбора адресов. Так вот, чтобы она не выглядела уныло и люди могли следить за тем, что происходит с проектом, я создал аккаунт на твиттере и транслирую сообщения на этот сайт в удобном мне виде. Человек может заходить на сайт и смотреть «что нового», а может и воспользоваться тви, а мне нужно будет вводить текст всего единожды. Тем более люди легко смогут задать вопрос, а я быстро о нем узнаю.

В техническом исполнении все оказалось не сложно.
Читать дальше →

Отправка комментариев пользователей сайта вам на Jabbеr

Время на прочтение1 мин
Охват и читатели6.1K
Во время шумихи с аськой и предложениями перехода на jabber я решил разобраться: что же такое джаббер и как он мне может пригодиться кроме прямого общения.

Применение нашлось само собой – хочется получать комментарии с сайта себе в мессенжер. Этот подход оказался очень удобным и простым в реализации.

Поскольку я только начал разбираться с джаббером решил использовать готовую библиотеку для php (так как мой сайт работает на нем).
Итак, на сайте протокола xmpp (jabber) xmpp.org/software/libraries.shtml я скачал баблиотеку xmpphp (она мне понравилось больше всех своей простотой в понимании) и закачал ее на свой хост.

В функцию добавления комментария на сайте я добавил строки:

include ‘XMPPHP/XMPP.php’;
$conn = new XMPPHP_XMPP('джаберовский сервер', 5222, 'логин', 'пароль', 'xmpphp', 'jabber.ru', $printlog=false, $loglevel=XMPPHP_Log::LEVEL_INFO);
try
{
	$conn->connect();
	$conn->processUntil('session_start');
	$conn->presence();
	$conn->message('ваш джаббер', 'текст сообщения');
	$conn->disconnect();
}
catch(XMPPHP_Exception $e)
{
	die($e->getMessage());
}


Где: джабберовский сервер — сервер через который отправляются сообщения (я указал тот же на который и приходят сообщения).
Внимание! Текст сообщения должен быть с кодировке UTF-8.

Вот собственно и все…

P.S. Спасибо за приглашение на хабр! Решил перенести свою статью из песочницы в блог.

Отображаем e-mail в виде картинки

Время на прочтение1 мин
Охват и читатели3.3K
Сегодня понадобилось опубликовать несколько адресов электронной почты на общедоступной странице в Интернете. У меня запасена картинка с моим e-mail'ом, но опубликовать нужно было чужие адреса. Работать в GIMP я очень не люблю, поэтому идея сделать статичные картинки и опубликовать их была сразу же отброшена. Я перешёл к следующей идеи — найти PHP скрипт, который бы создавал картинку с адресом электронной почты налету.
Читать дальше →

Определение периодов времени по текущей дате

Время на прочтение9 мин
Охват и читатели1.5K
Как-то недавно появилась задача сделать выборки из БД по разным периодам времени в зависимости от текущей даты. Для этих целей я реализовал класс с некоторым набором функций, определяющих концевые участки необходимых временных отрезков.

На мой взгляд такие задачи возникают довольно часто и иметь один инструмент, который можно впоследствии дополнять новыми функциями, соответствующими различным врменным интервалам, очень удобно. Конечно в этом нет ничего сложного, но думаю это поможет кому-то сэкономить время на этой рутинной работе. Кроме того в нете ничего готового я просто не нашёл.
Собственно код...

Проверка минимальной версии PHP

Время на прочтение1 мин
Охват и читатели1.6K
Сделал простенький сервис для проверки минимальных PHP-требований, необходимых для работы скрипта.

Можно загружать как один PHP-файл, так и архив (zip, tar.gz, tar.bz, tar)
www.webtask.ru/phpversioning

Например, phpMyAdmin-3.1.1-english.tar.gz:

PHP version:
5.2 or higher

PECL extension modules:
fileinfo:0.1

Extension modules:
mysql
mysqli
curl
mbstring
gmp
bz2
mcrypt
zip

Отправить POST через file_get_contents()

Время на прочтение3 мин
Охват и читатели88K
Чтобы получить содержимое веб-страницы все с удовольствием используют file_get_contents(), например file_get_contents('http://www.habrahabr.ru/'). Но я уже давно наблюдаю, что, как дело доходит до того, чтобы отправить POST, разработчики используют либо CURL, либо открывают сокеты. Я не считаю, что это плохо или что не надо так делать, просто для решения простых задач можно использовать простые решения.

Я и сам так раньше делал, пока на наткнулся на понятие контекстов потоковых операций в PHP. Контекст позволяет передать дополнительные параметры потоковому обработчику. Для http например, можно сконфигурировать POST-запрос или передать дополнительные заголовки.

file_get_contents() принимает 3 параметром «контекст», который собственно и конфигурирует сам запрос.
Ниже пример такого запроса или RTFM

Читать дальше →

Осторожность с датой не помешает

Время на прочтение1 мин
Охват и читатели996
imageМне для своего проекта, на php, всегда надо точно знать какой номер недели сейчас. Я пользовался командой date() для этого и получал год и номер недели. Например 22 декабря 2008 года была 52 неделя года. просто замечательно все было пока не пришло 29 число. Потому 29 декабря 2008 года идет как неделя 00, что мягко говоря неправильно. Поэтому я окончательно уверился в том, что для точных и калледарных вычислений data вовсе не подходит. Больше всего подходит функция strftime(’%W’);
Читать дальше →

Сравнение PHP IDE

Время на прочтение1 мин
Охват и читатели69K
Вместе с Владимиром Стаценко сделали достаточно подробное сравнение популярных PHP IDE.
В сравнение вошли: Eclipse PDT, Zend Studio, NetBeans и Aptana.

Однозначно лучшую IDE называть не будем: для кого-то главное одно, для другого — иное. Определяйте сами.

HTML-версия таблички с фиксированным заголовком
PDF-версия

UPDATE
Расшарил исходник в Google Docs всем на чтение. Там более свежие данные, где учтены комментарии, а так же добавлена dev-версия NetBeans 7.

Исследование совместимости Zend Framework и Quercus PHP

Время на прочтение5 мин
Охват и читатели1.2K
caucho-whiteЯ давно уже заинтересовался объединением мира Java и PHP, в частности, при помощи замечательного продукта Quercus PHP — порта PHP-интерпретатора вместе с библиотеками на Java. И вот, очередной раз просматривая уже почти готовый архитектурный макет своего движка для браузерных онлайн игр, я обратил внимание на ускользнувшую от меня деталь. Ведь я собирался использовать популярный и мощный фреймворк Zend Framework, запуская его, конечно же, поверх QuercusPHP (детальнее про архитектуру движка я начну рассказывать после нового года). А он, как известно, достаточно требователен к различным расширениям и модулям — в одном проекте, что я сейчас делаю, используя только Zend_Search_Lucene, я встретился с необходимостью подключения ранее не используемых расширений. А значит вполне может быть ситуация, что эта платформа не будет поддерживать все необходимые функции для работы Zend Framework-а. Просмотр Google по поводу совместимости ничего определенного не дал, так что было решено посвятить пару часов собственному исследованию.
Читать дальше →

Quicky обзавелся своим «домом»

Время на прочтение1 мин
Охват и читатели748
для нетерпеливых: quicky-tpl.net
что такое Квики (высокой производительный шаблонизатор с расширением синтаксиса и функционала Smarty) я писал здесь habrahabr.ru/blogs/php/45337, а подкатом история о том, как у квики оказался новый дом =)
Читать дальше →

Smarty обновился до версии 2.6.22

Время на прочтение1 мин
Охват и читатели743
В связи с некоей ошибкой в библиотеке PCRE из PHP 5.2, скоропостижно (спустя всего 15 дней после выхода 2.6.21, в котором, наконец, сподобились ввести method chaining) зарелизилась версия 2.6.22 шаблонизатора Smarty. Проблемы, возникающие при «some versions of PCRE» (ц), решились гениально и просто — выкидыванием нафиг самого вкусного изменения прошлого релиза :)

Официальный CHANGELOG на офсайте.

Ближайшие события

В защиту PHP

Время на прочтение4 мин
Охват и читатели3.5K
Недавно на stackoverflow была создана тема, в которой автор утверждал, что PHP неважнецкий язык и просил переубедить его. В качестве аргументов он привёл несколько доводов, которые были последовательно прокомментированы другим участником. Вольный перевод сего представлен ниже.
Лично я полностью согласен с отвечающим и думаю, что всем ненавистникам PHP стоит с нижеследующим ознакомиться.

PHP имеет противоречивое именование системных и библиотечных функций. Предсказуемые схемы именования имеют важное значение в любом языке.

Это то, что я люблю и ненавижу одновременно. Однако по своей сути это утверждение верно. Почему некоторые двухсловные функции разделяются подчеркиванием, а некоторые нет? Почему $needle и $haystack иногда меняются местами? Это смешно. Но в конце концов действительно ли это так важно? Моя IDE с автоподстановкой и php.net всегда под рукой. Так что возможно это и является негативным фактором для PHP как языка. Но не мешает мне быть эффективным программистом.
ещё

Yii Framework

Время на прочтение2 мин
Охват и читатели40K
Случайно встретился ещё один PHP-фреймворк. Обычно новые фреймворки я просматриваю мельком, но этот меня очень заинтересовал.

Авторы (Qiang Xue, Xiang Wei Zhuo), возможно, известны вам по довольно гибкому, но и довольно тормознутому фреймворку Prado.

Итак, что же в нём такого интересного?
Читать дальше →

Удобное профилирование в Kcachegrind

Время на прочтение1 мин
Охват и читатели8.8K
открыл для себя ядерную фичу при профилировании с xdebug+kcachegrind) (для себя по крайней мере).
Вообщем нужно запустить дебаггер и остановить на первой строке, потом одновременно загрузить в kcachegrind файл, куда xdebug постепенно сливает результат профайлинга. Далее дебаггер нужно сдвинуть на след. строку, потом нажать «reload» в kcachegrind и вауля). Файл профилирования заново загружается и информация обновляется. Весь процесс работы php, шаг за шагом, виден в буквальном смысле как на картинке(вкладка call graph).
PS думаю, есть смысл прикрутить к этому делу анимацию и тогда процесс разработки вообще будет сравним с просмотром сериала)
PSPS негативным моментом была ошибка кэша kcachegrind(насколько я понял), что решилось корректированием файлов настройки в домашней папке.
Проверял на:
ОС Linux
Kcachegrind 0.4.6
Eclipse (PDT)
xdebug 2.0.0-2

PHP 5.2.8 Released

Время на прочтение1 мин
Охват и читатели792
Как все помнят, с релизом PHP 5.2.7 вышла некоторая лажа, версия была убрана, а на официальном сайте рекомендовалось подождать версии 5.2.8. Дождались, товарищи, поздравляю :)

Справедливости ради надо отметить, что, как обнаружил symbix, исходники PHP 5.2.8 выложили в свободный доступ несколько раньше, чем появился официальный релиз.

Хотелось бы, кстати, напомнить, что это не первый крупный косяк с релизом PHP5. В прошлый раз версия PHP 5.1.3 в качестве критического обновления вышла в тот же день, что и PHP 5.1.2.

Так и живём :)

Прекращено распространение PHP 5.2.7

Время на прочтение1 мин
Охват и читатели808
Due to a security bug found in the PHP 5.2.7 release, it has been removed from distribution. The bug affects configurations where magic_quotes_gpc is enabled, because it remains off even when set to on. In the meantime, use PHP 5.2.6 until PHP 5.2.8 is later released.

Краткий пересказ:
В связи с найденным в PHP 5.2.7 багом, касающимся безопасности, было прекращено распространение релиза. Баг заключается в том, что не включается magic_quotes_gpc.
Решение — откатиться на PHP 5.2.6 и ожидать PHP 5.2.8.

Веб-сервисы в теории и на практике для начинающих

Время на прочтение9 мин
Охват и читатели660K

Что такое веб-сервисы?



Прежде всего, веб-сервисы (или веб-службы) — это технология. И как и любая другая технология, они имеют довольно четко очерченную среду применения.

Если посмотреть на веб-сервисы в разрезе стека сетевых протококолов, мы увидим, что это, в классическом случае, не что иное, как еще одна надстройка поверх протокола HTTP.

С другой стороны, если гипотетически разделить Интернет на несколько слоев, мы сможем выделить, как минимум, два концептуальных типа приложений — вычислительные узлы, которые реализуют нетривиальные функции и прикладные веб-ресурсы. При этом вторые, зачастую заинтересованы в услугах первых.

Но и сам Интернет — разнороден, т. е. различные приложения на различных узлах сети функционируют на разных аппаратно-программных платформах, и используют различные технологии и языки.

Чтобы связать все это и предоставить возможность одним приложениям обмениваться данными с другими, и были придуманы веб-сервисы.
Читать дальше →

Контроль скалярных типов в PHP 5

Время на прочтение3 мин
Охват и читатели3.2K
[Обновлено]: Внесены некоторые изменения в код. Спасибо ithilion и LoneCat

Все уже знают что в PHP 5 в аргументах функций можно указывать их тип, за исключением… скалярных типов, т.е.: integer, string, boolean, float, и т.д.

Однако на странице мануала о контроле типов, в комментариях, Daniel L. Wood приводит достаточно интересное решение этой проблемы с помощью класса-обработчика ошибок. Единственный существенный недостаток этого решения — это его производительность.

Ниже я попытаюсь рассказать, как можно оптимизировать это решение, а также стоит ли им пользоваться, в принципе, в продакшн релизах.
Читать дальше →