Как в Symfony 3.4 в PHPUnit тестах вызвать сервис контейнер

Иногда очень удобно написать юнит-тест для какого-либо класса. Но что делать, если в этот класс нужно внедрить заранее сконфигурированные зависимые классы? Правильнее всего использовать сервис-контейнер из Symfony приложения. Для этого нужно немного изменить сигнатуру тестового класса: (далее…)

Symfony 3.4: A circular reference has been detected when serializing the object of class (configured limit: 1)

Начнём с того, что Симфони ссанина ёбаная и я её рот ебал! Ни дня без какой-либо хуйни не обходится! Создаёт проблемы на ровном месте. И вот на этот раз эта ебалайка пишет мне: A circular reference has been detected when serializing the object of class (configured limit: 1). А я в рот не ебу что этой паскуде нужно. Но деваться некуда, нужно избавляться от этого недоразумения. (далее…)

make:entity и doctrine:generate:entities для генерации сущностей в Symfony 3.4

Ещё один момент, по которому Symfony можно считать худшим PHP-фреймворком в плане user-friendly. Симфони содержит несколько консольных команд для автоматизации работы с Entity, которые делают практически одно и тоже: make:entity и doctrine:generate:entities. (далее…)

Как в Symfony 3.4 перегенерировать все entity из yml в annotation

Допустим, у вас есть ряд сущностей описанных через yml, однако, но вдруг приспичило описывать свои сущности аннотациями. Не переделывать же всё вручную? Сначала нужно удалить старые версии сущностей: rm -rf app/current/src/TestBundle/Entity Теперь нужно выполнить конвертацию. php bin/console doctrine:mapping:convert --env=prod --force annotation ./src/ После чего сгенерировать геттеры и сеттеры: php bin/console Read more

Как в docker смонитовать директорию с нужными правами доступа

Допустим, есть директория куда пишутся логи и она монтируется в контейнер). Соответственно php-fpm по умолчанию запускается от www-data и прав писать у него в эту директорию нет. Как можно решить данную задачу? Рассмотрим 6 способов: (далее…)

Как работает антифрод в платёжных шлюзах и биллинговых системах

Недавно занимался онлайн шопингом и получил отказ продавца выполнять заказ по следующей причине:

Your order did not pass the fraud platform for the following reasons: 1. Distance from Shipping/Billing - 4,213 2. Geological billing mismatch --> GEO location Finland / Card Based in - Russia / Shipping - the US.
(далее…)

Что такое pivot tables или entity–attribute–value (EVA модель)

Существует альтернативный подход к проектированию таблиц в реляционных СУБД. Название полностью отражает суть: развёрнутая таблица (pivot table) представляет из себя развёрнутую на 90 градусов обычную таблицу.То есть названия полей будет располагаться не горизонтально, а вертикально. В минимальной реализации такая таблица будет состоять из двух полей: attribute и value, где attribute будет содержать уникальное имя атрибута, а value - его значение. Отсюда и второе название - entity–attribute–value (EVA модель). Работа с такими таблицами будет напоминать работу с key-value хранилищами. Самое интересное, что таблицы с подобной структурой можно создать в абсолютно любой СУБД и не требует никаких дополнительных настроек. (далее…)

su: failed to execute /usr/bin/zsh: No such file or directory

Подобное сообщение появляется если попытаться залогиниться под пользователям, для которого был установлен альтернативный shell, который был впоследствии удалён. Самый эпик фейл, если этим пользователем является root.

su
Password:
su: failed to execute /usr/bin/zsh: No such file or directory
Но ничего страшного, выход есть! Чтобы поменять оболочку для рута не имея доступа к аккаунту придётся загрузиться с LiveCD и вручную поправить файл /etc/passwd. (далее…)

Как в PHP с помощью Guzzle отправить Raw POST запрос

Довольно частая задача, дёрнуть какой-либо сервис и передать ему данные в POST-запросе, но не через форму, а в виде, например, json или бинарных данных. Такой подход называется RAW POST, когда данные оправляются в теле запроса. С помощью библиотеки Guzzle это можно сделать так: (далее…)


Любишь мемасики?

Подпишись на мой телеграм-канал!

Открыть
Закрыть