Pull to refresh

runkit 1.0.2

Reading time1 min
Views4.1K
Ничто не предвещало ничего (с)

После 5 лет молчания и отсутствия развития, runkit разродился новой версией (даже двумя) и, потенциально, новым мейнтейнером (dzenovich).

Пока в официальном pecl-репозитории он отсутствует, но когда это нас останавливало:
pecl install github.com/downloads/zenovich/runkit/runkit-1.0.2.tgz

Код проекта находится по адресу: github.com/zenovich/runkit.


Для тех, кто не в курсе, runkit — это магическая штуковина, которая позволяет изменять РНР-код на лету. Помимо этого он умеет запускать РНР-код в отдельном окружении, создавая уютную "песочницу", которая не сделает «ой» основному коду (для этого нужно собирать PHP с поддержкой тредов, т.е. --enable-maintainer-zts для configure).

Что нового добавилось:
  • Создание и подмена статических методов
  • Импорт статических свойств
  • Возможность использовать замыкания в «песочнице»
  • Полная поддержка ветки 5.3, вплоть до 5.3.3. Уиии!
  • Исправлено множество багов и фич

Можно по разному относится к runtime замене кода, но присутствие инструмента лучше, чем его отсутствие. Из областей применения, которые сразу приходят на ум: замена мокам и стабам, точечные правки во внутренностях библиотек.

UPD: Текст был дополнен и исправлен, тем самым легендарным, а местами даже краснознаменным, dzenovich.
UPD2: Пример использования runkit в PHPDaemon. Там же и небольшое описание возможностей runkit.
Tags:
Hubs:
Total votes 49: ↑43 and ↓6+37
Comments20

Articles