Обновить
128K+

PHP *

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

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

Недокументированные изменения или PHP 5.4 и перегрузка функций

Время на прочтение3 мин
Охват и читатели13K
Как это было

Не так давно столкнулся с одной проблемой, возникшей при переезде на php 5.4. Задача состояла в тестировании функционала, который использовал родные функции. К слову, Fumocker отлично справляется с этой задачей, позволяя в тестах переопределять встроенные функции. Я написал пачку тестов и запустил их локально. Все тесты прошли успешно. Отлично! Задача была сделана и я был в полном счастье, пока не добавил проект в travis-ci. И? Сборка была сломана под php 5.4, когда под 5.3 всё светилось зелёным.

Именно этот факт навел меня на мысль, что между 5.3 и 5.4 должна быть разница в перегрузке функций.
Читать дальше →

Обход областей видимости или неожиданное поведение функции EACH

Время на прочтение2 мин
Охват и читатели4.2K
Никогда не понимал зачем в PHP функция each. Ведь есть foreach…
Но сегодня у меня «сломался» один участок кода, который жил шесть лет.
Там была конструкция с использованием each.
ошибка была исправлена секунд за 30 — давно думал исправить это все на foreach, но оставлял в качестве напоминания о том, какой индокод у меня был в свое время. Но просто исправить и пройти мимо я не мог.
Итак each против ООП:
1 — each игнорирует области видимости и спокойно выводит private свойства.
Читать дальше →

Слежение за изменениями данных в MySQL при помощи PHP

Время на прочтение4 мин
Охват и читатели35K
А что если к такой замечательной возможности MySQL как создание триггеров, способных записывать старые и новые значения данных при вставке, изменении и удалении записей добавить информацию, которой обладает php скрипт?

Триггеры MySQL знают:
* момент в который происходит изменение
* старое и новое значение

PHP знает:
* кто в данный момент залогинен
* какая страница открыта, с какой перешли
* бравзер
* IP адрес
* POST, GET
* Cookie

Каким же способом можно умудриться записать всю необходимую информацию?
Читать дальше →

MODX Revolution — пара костылей для необычных ситуаций

Время на прочтение5 мин
Охват и читатели22K
MODX конечно крутая CMF, но порой сталиваешся с такими мелочами, которые напрягают. Я не буду в этом топике плакаться какие все вокруг плохие, а я такой хороший. Возьмем, например, ветку Revolution и препарируем ее. А чтобы вы не потеряли интерес к этой заметке, вот небольшой план статьи:
  1. Разбор бэкенда
  2. Углубление в настройки
  3. Работа с вложенными чанками
  4. Наблюдаем за работой парсера
  5. Мощный кеш

Итак, все, кому стало интересно прошу под кат.

LZW-сжатие строк на javascript и распаковка средствами PHP

Время на прочтение2 мин
Охват и читатели15K
Буквально вчера столкнулся с ситуацией, что не смог найти рабочих классов/модулей по сжатию/распаковке строк алгоритмом LZW. Точнее сказать: jsCompress-jsDecompress — работает. PhpCompress-PhpDecompress — работает. А вот jsCompress-PhpDecompress либо возвращает вообще что-то неведомое, либо пустую строку. Честно сказать не знаю, может такой проблемы с ANSI и нет, но вот с utf-8 она очень явно проявляется. Потратив несколько часов на решение проблемы я решил опубликовать готовые к работе функции на хабре.
Читать дальше →

Переопределение предка (dirty hack)

Время на прочтение4 мин
Охват и читатели6.5K
UPD: Лучше конечно такого избегать. Все это страшно, ужасно, и воняет. Но воняет чуть меньше чем VQMOD, и если уж приходится патчить «живой» и обновляемый, но жуткий легаси, то такой подход имеет право на существование. Но НИКОГДА не делайте так в проектах которые вы только начинаете или можете изменить архитектуру на более расширяемую. Статью оставляю как есть. «На память».




Иногда очень хочется переопределить поведение класса родителя, не меняя его код.
К примеру поменять место хранения шаблонов из файлов в базу… или добавить кэширование.
или заменить в ORM удаление записей на пометку их как удаленные.
Да мало ли что мы можем пожелать изменить.
Если каждый программист будет лезть в ядро фреймворка или просто в чужой код, то это будет каша.
У этой задачи есть множество решений. Я хочу предложить то, которое мне нравится больше всего.
Решение основано на __autoload() а точнее на spl_autoload_register.
Читать дальше →

Определение части речи слова на PHP одной функцией

Время на прочтение3 мин
Охват и читатели41K
Прочитав пост http://toster.ru/2410/, я написал функцию, которая определяет из строки слов их части речи. Определение, конечно не 100%, но можно легко дорабатывать.

Функция возвращает массив значений групп:
  • 1. прилагательное
  • 2. причастие
  • 3. глагол
  • 4. существительное
  • 5. наречие
  • 6. числительное
  • 7. союз
  • 8. предлог


Пример вызова функции:
print_r(chastrechiRUS('В небе летит красивый сверкающий самолёт'));


Результат работы функции (массив):
Array ( [0] => 8 [1] => 4 [2] => 3 [3] => 1 [4] => 2 [5] => 4 )


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

Графовая база данных Neo4j в PHP

Время на прочтение5 мин
Охват и читатели58K
В последнее время я все чаще слышу о NoSQL и о графовых базах данных в частности. Но воспользовавшись хабропоиском с удивлением обнаружил, что статей на эту тему не так и много, а по запросу «Neo4j», так вообще 4 результата, где косвенно упоминается это название в тексте статей.

Что такое Neo4j?


image
Neo4j — это высокопроизводительная, NoSQL база данных основанная на принципе графов. В ней нет такого понятия как таблицы со строго заданными полями, она оперирует гибкой структурой в виде нод и связей между ними.

Как я докатился до этого?


Уже более года я не использовал в своих проектах SQL, с того времени, как попробовал документо-ориентированную СУБД "MongoDB". После MySQL моей радости не было предела, как все просто и удобно можно делать в MongoDB. За год, в нашей студии создания сайтов, переписали тройку CMS, использующих основные фишки Mongo c её документами, и с десяток сайтов работающих на их основе. Всё было хорошо, и я уже начал забывать, что такое писать запросы в полсотни строк на каждое действие с БД и все бы ничего пока на мою голову не свалился проект с кучей отношений, которые ну никак не укладывались в документы. Возвращаться к SQL очень не хотелось, и пару дней я потратил чисто на поиск NoSQL решения, позволяющего делать гибкие связи — на графовые СУБД. И по ряду причин мой выбор остановился на Neo4j, одна из главных причин — это то, что мой движок был написан на PHP, а для неё был написан хороший драйвер "Neo4jPHP", который охватывает почти 100% REST-интерфейса, предоставляющегося сервером Noe4j.
Читать дальше →

Облачный PHP хостинг в один клик!

Время на прочтение2 мин
Охват и читатели15K
Рады сообщить, что платформа Jelastic становится «полиглотом» — в четвертом квартале 2012 года планируется запуск PHP облака. Уникальная фишка сервиса Jelastic PHP — это вертикальное масштабирование: больше не нужно переплачивать за большие сервера или страдать от нехватки ресурсов. Благодаря данной фиче с увеличением нагрузки, приложение автоматически получает необходимые ресурсы, с уменьшением соответственно — наоборот. Это действительно новый подход к облачному хостингу: платформа очень проста и удобна в использовании, так что даже новички смогут легко развернуть свои приложения, вместе с тем поддерживаемый функционал очень широк, так что платформа придётся по вкусу даже самым продвинутым PHP разработчикам.

Вы получаете огромные преимущества на протяжении всего жизненного цикла приложения (разворачивание/тестирование/продакшн): после того как приложение загружается в Jelastic, Вы можете тестировать, масштабировать и разворачивать его на продакшине без каких-либо изменений кода, Вы можете клонировать окружения, включая базы данных, для устранения неполадок или модификации, обновлять приложение с нулевым даунтаймом и определять разный уровень доступа к окружению для каждого члена вашей команды.

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

Отдаем файлы эффективно с помощью PHP

Время на прочтение3 мин
Охват и читатели293K
Если Вам потребовалось отдавать файлы не напрямую веб сервером, а с помощью PHP (например для сбора статистики скачиваний), прошу под кат.
Три способа отправить пользователю файл и не повесить сервер

Потоковая загрузка и обработка видео посредством node.js + php и ffmpeg — часть первая

Время на прочтение4 мин
Охват и читатели28K
Работаю в аутсорсинговой компании и как-то встала задача загрузки видео с возможностью последующей обработки для внутренних нужд приложения: ресайз до нужного размера, конвертирование к нужному формату, вытягивание аудио-дорожек (если таковые присутствуют), раскадровка видео. В конце результаты нужно сохранить в облачном хранилище для последующего использования в онлайн-редакторе. Требования: масштабируемость, неограниченый размер видео, скорость, кроссбраузерность, наглядность.

Поскольку тема очень обширная, разделю ее на разделы:

  1. Общие проблемы, нюансы, с которыми пришлось столкнуться
  2. Загрузка видео (на этой теме, пожалуй, не буду останавливаться, поскольку она уже поднималась в этом и этом посте.
  3. Обработка видео.
  4. Сохранение в облачном хранилище.

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

Создание облачного сайта на PHP с SQL Database и его развертывание с помощью Git

Время на прочтение8 мин
Охват и читатели16K
Это руководство содержит сведения по созданию веб-сайта PHP Windows Azure с Windows Azure SQL Database и его развертыванию с помощью Git. Предполагается, что на вашем компьютере установлены PHP, SQL Server Express, драйверы Microsoft для SQL Server для PHP, веб-сервер и Git. После выполнения всех действий вы получите веб-сайт PHP с базой данных SQL, работающий на платформе Windows Azure.

Примечание. Для установки и настройки PHP, SQL Server Express, драйверов Microsoft для SQL Server для PHP и служб IIS можно воспользоваться установщиком Microsoft Web Platform Installer.

О чем пойдет речь в данном руководстве:

  • Как создать веб-сайт Windows Azure и базу данных SQL с помощью портала управления (предварительная версия). Поскольку на веб-сайтах Windows Azure технология PHP включена по умолчанию, для выполнения кода PHP никакие особые действия не требуются.
  • Как публиковать и повторно публиковать приложения на платформе Windows Azure с помощью Git.

Следуя инструкциям в этом руководстве, вы создадите простое веб-приложение на языке PHP для регистрации. Это приложение будет размещено на веб-сайте Windows Azure. Снимок экрана готового приложения приведен ниже:
Читать дальше →

Отладка непонятных ошибок в Magento

Время на прочтение6 мин
Охват и читатели13K
Наверняка каждый разработчик модулей для Magento попадал в ситуацию, когда вроде бы все сделано правильно, но не работает. Особенно это касается характерных ситуаций: создал роутер, а выдает 404 старницу, создал лэйaут, а контент не выводится, создал темплейт, а страница по прежнему пуста. Отличительной чертой таких ситуация является то, что как правило Magento никак на них не реагирует (не выдается ошибок, логи остаются пустыми). Именно об отладке таких ошибок и пойдет речь в данной статье.

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

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

Colada — удобная работа с коллекциями

Время на прочтение6 мин
Охват и читатели9K
Colada — библиотека для удобной и безопасной работы с коллекциями в PHP.

Это, прежде всего, работа в объектно-ориентированном стиле (что из коробки в PHP довольно неудобно). Немодифицируемые коллекции, защита от NPE (Null Pointer Exception) при помощи опциональных значений (optional values), любые значения (а не только скаляры) для ключений в map'ах — это всё об этом.

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

Полезные ссылки для PHP разработчика с MageConf 2012

Время на прочтение2 мин
Охват и читатели28K
MageConf 201216.09.2012 в Киеве в три потока прошла конференция MageConf 2012. Два потока были посвящены системе Magento, третий – PHP. Посетив все 6 докладов на потоке PHP, хотел бы кратко изложить основную информацию, донесенную спикерами. В итоге пост получился набором полезных ссылок по разработке на PHP.

Докладчики особое внимание уделяли утилитам и софту, которыми они активно пользуются в Magento. Один из спикеров ранее был разработчиком портала i.ua.
Читать дальше →

Удаленное выключение linux-сервера PHP

Время на прочтение2 мин
Охват и читатели11K
Возможно у вас, как и у меня возникала потребность выключения сервера удаленно (странная потребность, он ведь на то и сервер, чтобы постоянно работать). В любом случае у каждого свои мотивы. Итак, мне необходимо было выключить удаленный сервер с другого компьютера, выключение с android и ios.
Читать дальше →

Вышел PhpStorm 5 — еще больше умных полезных штук

Время на прочтение1 мин
Охват и читатели32K
phpstorm

Продолжая делать упор на анализ и качество кода, мы наконец добрались и до фреймворков. Работа над IDE уже продолжается, а прямо сейчас мы предлагаем попробовать:

  • Новый анализатор типов — меньше неверных предупреждений без дополнительных аннотаций
  • Больше предупреждений о runtime errors прямо в редакторе
  • Больше подсветки не используемого кода и конструкций
  • Панель сущностей MVC-фреймворков — пока Symfony 2 и yii, остальные по мере готовности
  • Прозрачная поддержка PHAR
  • Поддержка callbacks в литералах (call_user_func, etc) — включая поиск использования и рефакторинг
  • Серезные улучшения консоли БД — для всех баз данных — рефакторинг, экспорт, процедуры
  • Форматирование кода по стандартам PSR1/2, Symfony, Drupal
  • LiveEdit — редактирование PHP/HTML/CSS/JS видно в браузере в реальном времени без перезагрузки страницы
  • Серьезно улучшена поддержка CSS/SASS/SCSS/LESS — анализ, дополнение, форматирование
  • Поддержка шаблонов Jade

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

<?=date(z)-255?:'С днём программиста';

Время на прочтение1 мин
Охват и читатели30K
Сделай код ещё короче (это возможно). Покажи своё Кунг-Фу в этот праздничный день.

UPD @ 2010-09-13
Есть победитель.
Чествуем мастера лаконичного PHP, господина IntenT

Заметки о MODX Revo от новичка

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

Disclaimer: Конечно, скорее всего многое, из представленного в этой статье, покажется капитанством для сведующих людей. Однако, возможно, кому-то она поможет...

Введение


Итак, что же такое MODX (кстати, пишется именно так — MODX, а не как название хаба — MODx)? Если читать официальный сайт — то это CMS. Однако, это лишь часть правды. На самом деле, MODX находится примерно посередине между CMS и CMF. Впрочем, любой, кто заинтересовался бы MODX это быстро бы узнал из других статей, поэтому не буду останавливаться на этом пункте подробней.

Поскольку MODX находится посередине между CMS и CMF, то её не так легко освоить, как простую CMS, вроде Wordpress или Joomla. Пожалуй, эта статья написана в целях раскрытия некоторых тонкостей, которые кажутся неочевидными на первый взгляд.

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