Обновить
128K+

PHP *

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

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

Коллекции объектов в PHP. Часть вторая

Время на прочтение7 мин
Охват и читатели6.9K
Прошло почти 3 недели с момента публикации моего первого поста о коллекциях объектов в PHP. За это время было сделано много работы и получено много опыта, которым я хочу поделиться. Наибольшее количество изменений претерпели карты, большая часть внимания будет уделена именно им.

В этом посте вы увидите:
  • Проект и реализацию коллекций объектов в PHP.
  • Тесты производительности.
  • Впечатления о написании первых Unit тестов.
  • Интересную информацию о работе с множествами объектов PHP.

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

Простая замена phpMyAdmin для гиков

Время на прочтение2 мин
Охват и читатели15K
Довольно часто возникает ситуация, когда надо быстренько запустить пару запросов к MySQL базе у клиента на сервере. При этом есть только FTP и параметры соединения с СУБД. Самый простой выход — загрузить туда phpMyAdmin, ну а дальше дело техники. Обычно все это проиcходит на фоне того, что у клиента уже установлена какая-то CMS — WordPress, Drupal, Joomla…

Я люблю простые, красивые и удобные вещи. Я тепло отношусь к phpMyAdmin но в 90% моих Use Cases мне он не нужен. Нужно что-то простое. В идеале такое, что можно просто залить на сервер и открыть в браузере — не настраивая.

Пара вечеров и пакет готов.
Читать дальше →

Немного о красоте T-фракталов

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

В 1977 году Бенуа Мандельброт написал книгу «Фрактальная геометрия природы». В ней он подробно описал, как, руководствуясь простыми правилами, нарисовать сложный и красивый самоподобный узор. И до Мандельброта, и после, и по сей день фрактальные узоры привлекают к себе внимание математиков, программистов, художников и прочих любителей красоты.

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

Посмотреть на фракталы

PHP for Android project

Время на прочтение1 мин
Охват и читатели12K
image Думаю, начать стоит со Scripting Layer for Android (SL4A). Это така я штука, которая позволяет работать со скриптовыми языками на андроиде. Про запуск скриптов под SL4A, в частности на Python уже писали на хабре. Вот я и решил от скуки немного покурить самокрутку Android+PHP :). Есть такой проект, PHP for Android project (PFA).
Читать дальше →

Наглядный пример использования замыканий в PHP

Время на прочтение2 мин
Охват и читатели12K
Начиная с версии 5.3, PHP позволяет создавать замыкания. К сожалению, пример их использования в официальной документации http://www.php.net/manual/en/functions.anonymous.php#example-163 (example 3) обладает редкой изощрённостью и надуманностью. Надеюсь, пример под катом поможет увидеть в замыканиях другое применение, кроме как с функциями типа array_map().
Читать дальше →

Простейший сервис Вопрос/Ответ, используя Formspring

Время на прочтение3 мин
Охват и читатели6.1K
В данной статье я покажу, как можно использовать сервис анонимных вопросов Formspring для организации раздела «Вопрос/Ответ» на стороннем ресурсе на PHP.

Formpring API в природе существует (REST-like), но сейчас находится на стадии «беты», и полноценно им пользоваться могут, насколько я понял, лишь избранные. На странице для разработчиков пишут: «The API is currently limited to a select group of users and partners right now». Нужна регистрация, которая не тут же выплёвывает необходимые для работы ключи. Я уже посылал свою заявку какое-то время назад, но ответа так и не получил. Однако, некоторыми методами API можно пользоваться, не проходя аутентификации (банальное получение информации).

Сейчас я покажу, как лично я обошёл возникшие проблемы. Как я уже отметил в заголовке, это простейший сервис, который сможет:
  • Задавать анонимно вопросы;
  • Выводить список ответов.

Для работы с сервисом нам, естественно, потребуется аккаунт на Formspring. Начнём с простого и очевидного: вывод ответов с аккаунта.
Читать дальше →

Laravel — PHP Framework для ремесленников

Время на прочтение2 мин
Охват и читатели109K
Laravel PHP Framework
Laravel — это чистая и стильная основа для разработки. Он избавит вас от спагетти кода. Поможет вам создавать прекрасные веб-приложения используя простой и выразительный синтаксис. Разработка должна доставлять удовольствие. Наслаждайтесь глотком свежего воздуха.
Читать дальше →

Класс для реализации UNIX-демонов на PHP

Время на прочтение5 мин
Охват и читатели2.6K
Ну начнем с того, что довольно часто приходится сталкиваться с тем, что необходимо реализовывать какую-либо серверную часть для обработки каких-то данных и т.д. Естественно, что сервеную часть удобней всего было бы реализовать в виде демона. В свое время я наткнулся на подобный класс реализации демонов написанного на Python. И вот на прошлой неделе решил написать такое же творение на PHP, вроде получилось не плохо, оценивать Вам.
Читать дальше →

Проблема модификации даты через strtotime

Время на прочтение1 мин
Охват и читатели19K
Добрый день хабравчане.

Хочу поведать вам о небольшой проблеме с вычислением даты функцией strtotime.

Суть в следующем. Мне нужно было получить название предыдущего месяца. Ничего сложного в этой задаче нет:
$t = strtotime('-1 month');
echo strftime('%B', $t);

В большинстве случаев этот вариант отлично подходит. Но не сегодня.
Читать дальше →

Doctrine ORM behaviors, или как эффективно использовать трейты

Время на прочтение4 мин
Охват и читатели7.5K
С момента релиза php 5.4 уже прошло некоторое время, и мы решили поэкспериментировать с трейтами (traits), оценить их практическое применение. Как их можно использовать вместе с объектами Doctrine2?

Трейты


Трейты в php — это набор свойств и методов, которые можно добавить в класс.
Они реализованы на уровне интерпретатора и являются абсолютно прозрачными для Doctrine.

Трейты спроектированы для горизонтального повторного использования и идеально подходят для добавления общего поведения в несколько объектов.
Читать дальше →

Основатель PHP, Расмус Лердорф выступит с мастер-классом на DevConf 2012 10 июня

Время на прочтение1 мин
Охват и читатели5.6K
image
Rasmus Lerdorf (Расмус Лердорф) основатель PHP приедет в Москву 10 июня на DevConf 2012, чтоб провести эксклюзивный мастер-класс
[HighLoad] — Производительность PHP

  • На этом мастер-классе мы исследуем механизмы для ускорения приложений на PHP.
  • Мы проведем сравнительные тесты популярных приложений на PHP, постепенно увеличивая их производительность.

Не упустите свой шанс лично встретиться с «папой» PHP. После мастер-класс планируется автограф-сессия.

Подробнее о Расмусе en.wikipedia.org/wiki/Rasmus_Lerdorf
Его твиттер: https://twitter.com/#!/rasmus

Создание гибких анкет в Drupal 7

Время на прочтение9 мин
Охват и читатели19K
Обновлено: 09.06.2012
Выкладываю модуль Webform Multiple Conditions, который реализует описанный в статье функционал без модификации модуля Webform.

В статье предложен патч для модуля Webform, часто используемого в CMF Drupal для создания опросников и анкет. Патч позволяет через административный интерфейс указывать несколько условий для компонентов формы, а также управлять логикой их совместной работы.
Читать дальше →

Защита ajax-приложения от Cross Site Request атак (CSRF)

Время на прочтение2 мин
Охват и читатели36K
Совсем недавно у меня появилась задача защитить web-приложение полностью построенное на ajax от CSRF-атак.

Каков же механизм такой атаки? Суть заключается в выполнении запроса с другого сайта под авторизационными данными пользователя. Например, у нас есть действие удаления своего аккаунта example.com/login/dropme. Если защиты от CSRF атаки нет, мы можем на нужном нам сайте разместить тег:
<img src="http://example.com/login/dropme">

Сразу после того как пользователь зайдет на приготовленную нами страницу и подгрузит содержимое img, его аккаунт на example.com будет удален. О защите от этого я расскажу под катом.

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

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

Разрабатываем модуль PHP на C++. Часть 1: экскурс в мир Zend Engine 2

Время на прочтение12 мин
Охват и читатели15K
Доброго времени суток, уважаемое Харбасообщество!

Под катом изложена некоторая информация касательно написания расширений для PHP c использованием C++, почерпнутая мной из различных источников (по большей части англоязычных) и ковыряния исходников Zend Engine 2 во время разработки одного модуля для собственных нужд. Так как объем ее достаточно велик, далее я старался быть краток.

Итак, в этой части:

А вот до C++ в этой части мы так и не доберемся… =)

Маленький дисклеймер: содержимое статьи не есть истина в первой инстанции, не основывается на официальной документации (а есть ли она?) и является моим субъективным взглядом на ZE 2. Тем не менее, в свое время я был бы рад найти нечто подобное на просторах Рунета, дабы сэкономить время на начальных этапах разработки.

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

Об удалении квотированных строк из текста JavaScript

Время на прочтение1 мин
Охват и читатели1.3K
Как часть программы анализа исходных кодов было необходимо вырезать из JavaScript все строковые литералы. Сначала на PHP был реализован state based парсер, но это было медленно и уныло. А сделать быстро получилось с помощью регулярных выражений.
Читать дальше →

DevConf 2012 — сформирована альфа-версия программы конференции

Время на прочтение1 мин
Охват и читатели3.9K
image
Коллеги — спасибо Вам за голоса!

Альфа* версия программы уже на сайте DevConf 2012

Кто еще раздумывал над участием, поспешите — осталось меньше 20% мест.

* — Альфа означает что вероятны изменения в программе +-20%

Яндекс.Афиша. XSS

Время на прочтение1 мин
Охват и читатели1.3K
Всю пятницу провел в поисках XSS уязвимостей некоторых крупных сайтов. В итоге обнаружил XSS на нескольких официальных сайтах банков и на сайте Биглиона.
Администрация этих сайтов была уведомлена об уязвимостях, после их исправления — выложу пост с подробным описанием ошибок на сайтах банков.

В конце дня решил проверить есть ли такая дыра и в Яндексе.
Читать дальше →

Еще раз о каррировании и частичном применении в PHP

Время на прочтение4 мин
Охват и читатели6.9K
Искусство каррированияВ недавней статье предложена реализация каррирования (currying) и частичного применения (partial function application) на PHP. Ее фундаментальным недостатком является то, что результатом каррирования является не функция, а объект. Он уже не может быть передан в качестве callback-параметра, а для подстановки аргументов приходится использовать специальный синтаксис. В настоящем тексте предлагается новая, прозрачная реализация этих конструкций для PHP 5.3 и выше.

Термин currying происходит от фамилии американского математика Haskell Curry. Второе значение слова currying — выделка дубленой кожи.

Понятия каррирования и частичного применения происходят из функциональных языков программирования, в рамках которых они находят широчайшее применение. Современный PHP проявляет тенденцию к заимствованию некоторых элементов функционального программирования (функции как объекты первого класса, анонимные функции и замыкания), так что обсуждаемые концепции уже не являются для него совершенно инородными.

Эмуляция каррирования и частичного применения на PHP — это один из примеров того, что Макконнелл в «Совершенном коде» (гл. 4.3) называет программированием с использованием языка, а не на языке.
Читать дальше →

Рассылки по сегментам на основе MailChimp

Время на прочтение8 мин
Охват и читатели35K
Привет, Хабр! Сегодня я расскажу о том, как можно интегрировать сервис почтовых рассылок mailchimp на своем сайте.
Сервис дает множество возможностей:
— расширенный трекинг;
— выборки пользователей;
— красивые шаблоны писем;
— интеграция с социальными сетями;
— интеграция с Google Analytics;
— экономия времени на разработку своего проекта.
На основе этого сервиса мы сделали автоматическую рассылку спецпредложений по целевым срезам — определенным вендорам и категориям продуктов. Попробуем вкратце рассказать о некоторых особенностях реализации.
Читать дальше →

Коллекции объектов в PHP

Время на прочтение7 мин
Охват и читатели33K
На протяжении последних 5 лет я работаю с PHP. У него есть достаточно разных проблем, но это никогда не мешало создавать отлично работающие продукты.

Не смотря на это, есть ряд вещей, которые выполняются внутри достаточно «криво». Один из вопросов, который постоянно тратил мои нервы, был вопрос работы с множествами объектов с помощью массивом данных.
Читать дальше →