Pull to refresh

Comments 19

А мы тем временем uopz допилили до рабочего состояния.
Это, бесспорно, круто, но не придётся ли тем же заниматься с новой версией PHP?
Давольно странный вопрос, если изменится апи, то да. Но есть ощущение, что следущая версия, в которой так меняется апи выйдет еще не скоро.
Практика runkit показывает, что API меняется достаточно часто и добавляются новые оптимизации, делающие написание и поддержку таких расширений все более тяжелой задачей. Например, в PHP 5.4 добавили runtime cache, который очень сильно замедляет работу runkit, поскольку ему приходится сбрасывать этот кеш при каждом вызове.
Ну, вообще, у нас не так много таких мест, где без хардкорных моков прям не обойтись, это крайние случаи (и случаи приступов лени). Мы стараемся избегать подобной фигни. Поэтому, думаю, вероятность не такая большая. Хотя это зависит от того, насколько новую версию PHP вы имеете в виду. Для PHP 8 наверняка придётся патчить. А так — норм.
Жаль, что этот патч они сделали только сейчас, а не 2 месяца назад, когда мы переводили наши тесты на PHP7 :(
А что сами не сделали? Таск треккер говорит — затрачено 67 часов. Не очень-то и эпично
Мы пробовали вместе с автором решить те проблемы, что были. Тогда ни у кого не получилось. Т.е. тупо ни у нас ни у автора не было идей, как можно это починить :). Время тут не причем.

В целом, наш подход с Soft Mocks позволяет нам хоть на HHVM перейти, и кстати на HHVM базовые тесты для Soft Mocks проходят, хотя я для этого дополнительно ничего не делал.
А в чем были проблемы? Мы, кроме сегфолтов и кеширования вызовов ни на что не наткнулись.
Сегфолт — это серьезная проблема. Вот пример issue, который до сих пор висит открытым: https://github.com/krakjoe/uopz/issues/18. UPD: автор говорит, что на мастере больше не воспроизводится. Но у нас была такая проблема, когда мы тестили.
По этому комментарию складывается впечатление, что вас soft-mocks не устраивают. Или я не так понял?
Устраивают. Soft Mocks дают нам гарантию, что ничего не сломается при переходе на PHP 7.1 и последующие версии. Однако ещё лучше было бы, если бы нам не пришлось разрабатывать Soft Mocks вообще и мы могли бы пользоваться одним из этих расширений и они при этом работали.
Soft Mocks дают нам гарантию, что ничего не сломается при переходе на PHP 7.1

Это далеко не факт. В последних версиях php (5.3, 5.4, 5.5, 5.6) добавлялись новые языковые конструкции. Вот под них надо дописывать парсер, возможно логику работы самого механизма мока.
Ну, как минимум, пока мы не используем новые языковые конструкции, все будет работать. Во-вторых, парсер поддерживает Никита Попов и пока что переставать это делать он вроде бы не собирался. Ну и в конце концов, разработчики PHP обещают (ссылку не готов предоставить) открыть API для работы с AST в версии PHP 7.1, что тоже должно помочь при портировании на новую версию. Как бы то ни было, по сравнению с uopz и runkit, усилия по портированию на новую версию минимальны.
А мы тем временем сидим на PHP 5.5 и не известно сколько ещё сидеть будем :(
Всё-таки пришлось автолоад исправлять =)
youROCK, перешли на 7.1? Если да, как все прошло?

PHPUnit тем временем 5 дней назад отклонил ваш pull request :(
Нет, PHP 7.1 пока тестируется.
Задача не супер-приоритетная, т.к. мы не ожидаем двухкратного прироста производительности, поэтому переход планируется где-то в течение месяца.

Ну сейчас-то хоть перешли?

Sign up to leave a comment.