Laravel & PHP Deep — фреймворки и пакеты
188 subscribers
90 photos
18 videos
1 file
239 links
PHP-стек: Laravel, Symfony, Composer, Octane, Filament, Livewire. Релизы, security advisories, лучшие пакеты для трекеров/CRM/арб-инфры. Тестирование, деплой, performance.
Канал сети public.tg.
Download Telegram
Forwarded from AffPapa! Клуб спящих бизнесменов! Потрачено!
РИДДИК! Первый стрим с Ридиком и Ивановым через пол часа тут https://t.me/+HuSG2ngODc41MjY8 - должен быть разьеб! Иванов пьяный! Сделает красиво!
Composer ломается не из-за пакетов, а из-за грязного порядка зависимостей

Заархивировать проблему просто: Composer почти всегда падает не потому, что «плохой пакет», а потому что проект собран без дисциплины. Сначала смотрим composer.json: версии, конфликтующие расширения, лишние прямые зависимости. Потом — lock-файл: если он расходится с реальностью, воспроизведение багов превращается в лотерею.

Три проверки, которые экономят часы:
composer validate перед коммитом
composer install, если нужен воспроизводимый результат
composer update vendor/package вместо общего апдейта, когда чините точечную проблему

Ещё одна типовая ошибка — автозагрузка. Если класс «виден локально, но не виден в CI», почти всегда виноваты namespace, PSR-4 или забытый dump-autoload. И отдельно проверьте скрипты: post-install/post-update часто тащат побочные эффекты, которые маскируют настоящую причину сбоя ⚙️

Держите Composer как инструмент контроля, а не как кнопку «переустановить всё». Чем точнее зависимость описана, тем быстрее проект собирается и тем легче ловить регрессии.
Composer ломает проект не тогда, когда пакеты плохие, а когда автозагрузка и версии не зафиксированы

Если Composer в проекте воспринимают как «установщик библиотек», проблемы обычно приходят в самый неудобный момент: разные окружения тянут разные деревья зависимостей, а `vendor/` перестаёт быть предсказуемым. Здесь важны не красивые команды, а дисциплина.

— фиксируйте ограничения в `composer.json`: `require`, `require-dev`, `conflict`, `provide`;
— коммитьте `composer.lock`, если проект не библиотека;
— не смешивайте ручное редактирование `vendor` и нормальную установку через Composer;
— проверяйте `autoload` и `autoload-dev`, если классы «исчезают» после деплоя.

Отдельно следите за пакетами с тяжёлым bootstrapping: они могут увеличивать время старта, тянуть лишние сервисы и ломать CLI-скрипты. Если пакет нужен только в dev-режиме, он не должен жить в runtime-контуре приложения.

Ещё один частый провал — слепое обновление зависимостей. Сначала смотрят, кто за что отвечает, потом обновляют по одному слою: framework, потом пакеты, потом мелкие утилиты. Так проще поймать конфликт раньше, чем он всплывёт на проде.

Держите Composer не как кнопку «обновить всё», а как контракт между кодом, окружением и деплоем — тогда половина «магических» багов исчезает ещё до запуска.
Лонгрид о мемном кейсе Melbet vs Pepper Partners - реально ли оценить в аффилейтке репутационный ущерб в деньгах?

История на $2,000 вряд ли разрушит крупный бренд. Но она вполне может стоить ему сотен тысяч долларов и более, если публично остаётся без внятного решения.

Я в аффилейт-маркетинге более 25 лет, а последние пару лет одно из моих основных направлений - B2B matchmaking. Поэтому я регулярно вижу споры между компаниями о выплатах и претензии, и таких ситуаций в рынке явно становится больше.

Знаю многие кейсы, которые были в итоге решены благополучно до выхода в публичное поле и всегда приятно видеть, когда так происходит, но все больше и больше кейсов, которые не просто выходят в паблик, а еще и очень странным и глупым образом в паблике продолжают долго оставаться и наносить ущерб в то время как имеют очень простые и адекватные для обеих сторон варианты решения.

Вот например про один из таких кейсов писал уже здесь весной.

Если неконструктивны обе стороны (а бывает и так), то можно к этому относиться просто как к развлекательному контенту.

Но когда одна сторона открыта к адекватной коммуникации и поиску оптимального решения, а вторая сторона просто игнорирует проблему, при этом не уходя с рынка в закат, а продолжая тратить огромные бюджеты на PR и маркетинг бренда - это любопытная аномалия.

Сейчас самый заметный в аффилейт рынке пример это кейс Melbet <> Pepper Partners, который уже более месяца развивается в публичном поле и о нем уже писали и многие аффилейт медиа, и отдельные блоги, я наверно один из последних, кто у себя в блоге еще об этом не писал)

Изначальное заявление кейса и описание претензии от Pepper Partners можно почитать здесь.

Очень приличный на мой взгляд разбор со стороны и указание пары простых и логичных вариантов решения ситуации написал Артем Кравченко, можно почитать у него.

А я хочу разобрать эту историю с другой стороны, как можно оценивать репутационные потери от подобных историй непосредственно в деньгах и принимать более взвешенные решения, стоит ли вообще брендам занимать тактику игнорирования и допускать появление и продолжительное обмусоливание таких тем в паблике.

Для мелкого и крупного бренда такие истории могут иметь очень разный эффект, поэтому здесь разберем на примере крупного бренда, так как Melbet в нашем рынке относится именно к таким.

Не знаю конечно их точные цифры затрат на PR в рамках афф рынка (участие в конфах, собственные ивенты, реклама в афф медиа и т.п.), но из того, что вижу как организатор ивентов с приличным опытом, этот бюджет явно измеряется в миллионах $ в год, если не выходит за $10млн+.

Это без PR затрат на прямое привлечение игроков (бренд-амбассадоры, спонсорства футбольных клубов и т.п.), без бюджетов непосредственно на закупку трафика. Только на аффилейтку.

И вот уже более месяца в паблике незакрытый и не откоммуницированный публично кейс на $2k (две тысячи долларов).

В публичной дискуссии сейчас преобладает позиция, что Melbet в этом споре неправы.

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

Какие материальные потери может понести бренд в такой истории?

Многие люди, даже очень опытные и умные, почему-то к таким ситуациям относятся бинарно.

Рухнет бренд (закроется, обанкротится) - значит плохо на них повлиял кейс.

Останется бренд жить и работать как ни в чем не бывало внешне - значит никак не повлияло и может они правильно решили игнорировать, а кто-то вообще решит брать с них пример.

Но это же совсем не так, ситуация не бинарная.

Представим не фактические цифры Melbet, которых у нас нет, а консервативную модель крупного рекламодателя.

Если из-за такого кейса бренд потеряет 10 качественных действующих активных партнёров, либо не привлечёт 10 таких новых партнёров, которые в другой ситуации начали бы с ним работать, последствия уже могут быть кратно выше суммы самого спора.

Я не знаю внутренний LTV партнёра у Melbet. Но если принять для активного опытного аффилейта условные $10,000 LTV, десять таких потерянных партнеров - это уже шестизначная сумма $ недополученного дохода. И это без учёта крупных команд, в случае которых эффект может быть кратно выше и оказаться семизначным.

Даже если в этой модели ошибиться и завысить в несколько раз, сам принцип никуда не исчезает - незакрытый публичный спор на $2,000 в любом случае обойдется бренду многократно дороже этих $2,000.

Цифры конечно я прикинул условные, но рассуждения не виртуальные - я знаю афф команды, которые перестали быть их активными партнерами из-за этого кейса.

Одна известная в рынке команда публично рассказала о своем таком решении в моем чатике про scam-кейсы.

А теперь вернемся к миллионам долларов в год, которые Melbet тратит на публичный PR среди аффов через конфы и прочие активности.

У этих трат же есть определенные ожидаемые и реальные результаты, верно?

На каждый затраченный миллион ожидается определенное количество привлеченных новых партнеров и укрепление лояльности и увеличение оборотов с определенным количеством действующих партнеров.

Вообще без понятия какая там ожидаемая сумма выхлопа на каждый потраченный миллион, поэтому обозначим ожидаемую сумму выхлопа с потраченного на PR миллиона в X.

При таком незакрытом публичном кейсе, вызывающем большой отклик и возмущение в рынке - останется эта сумма выхлопа с PR X без учета прочих факторов или она станет меньше X?

Очевидно станет меньше, доверие к бренду ниже, а значит и вложения в PR дают меньшую отдачу.

Я понимаю, что не все читатели, в том числе заинтересованные, могут дружить с математикой, и особенно понятием математического ожидания на дистанции, но вопрос здесь не только в этике и не только в справедливости конкретной претензии. Это вопрос качества управленческого решения.

Когда бренд инвестирует миллионы в доверие рынка - через конференции, медиа, партнёрские активности и PR, игнорирование аргументированного публичного конфликта снижает отдачу от всех этих вложений. Репутация не выглядит отдельной строкой в P&L, но её потеря вполне превращается в недополученный доход, более дорогой PR и менее лояльных партнёров.

Я искренне надеюсь, что все больше компаний в нашем рынке будут становиться более сознательными и не терять огромные деньги на ровном месте, и если бизнес-этика не зашита в культурный код, то хотя бы из сугубо материальных корыстных соображений начнут вести себя адекватнее)

Всем отличной недели и благоразумия)
Forwarded from AffPapa! Клуб спящих бизнесменов! Потрачено!
🙇‍♂️ 34% Reg2Dep на киберспорте. Готов забрать максимум с финальной стадии TI26? 😆

Групповая стадия The International 2026 уже позади, а впереди — главная часть турнира, которую особенно ждут любители ставок на киберспорт: плей-офф с 20 по 23 августа.

Именно сейчас интерес к турниру выходит на максимум — отличный момент, чтобы монетизировать киберспортивный трафик и протестировать альтернативу привычным игровым, iGaming и брендовым запросам.

💸 Только посмотрите на стату партнеров SpinBetter Partners с прошлых заливов на киберспорт: заносы не просто стабильны — они кратно растут.

📌 Читать статью на Medium
💵 Получить оффер: @spinbetter_aff_support
Please open Telegram to view this post
VIEW IN TELEGRAM
7 PHP-пакетов, которые стоит проверить до того как тащить код в прод

Есть наблюдение которое стоит проверить: у большинства проблем в PHP-проектах виноват не язык, а упаковка зависимости. Пакет должен решать одну задачу, иметь живую поддержку и не тащить за собой пол-экосистемы ради одной кнопки.

— Для конфигов и env-обвязки берут spatie/laravel-data или аналоги с явной схемой: меньше магии, проще тестировать.
— Для очередей, кэша, файлов и событий лучше пакеты, которые опираются на контракт Laravel, а не лезут в ядро через reflection.
— Для логики домена ищите библиотеки без фреймворк-зависимости: так их проще переиспользовать в Symfony, CLI или воркерах.
— Любой пакет с генерацией кода проверяйте на предсказуемость: что создаёт, как обновляет, как удаляет.

Перед установкой смотрите не только на звёзды, а на API, частоту breaking changes, наличие тестов и читаемость README. Если пакет нельзя быстро обернуть в свой адаптер, он почти всегда слишком дорогой в сопровождении.

Правило простое: пакет можно брать, если вы понимаете его границы и готовы удалить его без переписывания половины проекта.
Forwarded from ПОКЕРОК Partners
$80 за FTD на СНГ — казино-оффер от ПОКЕРОК Partners

Ищете новый оффер для теста? Рассказываем, что предлагаем партнёрам:
• CPA $80 за FTD на все гео СНГ
• $100 к первой выплате для новых аффилиатов
• 5% по саб-реферальной программе
• прозрачная статистика в партнёрском кабинете
• поддержка личного менеджера

Принимаем различные источники: social, мессенджеры, YouTube / Twitch / Kick, SEO, PPC, in-app и медийный трафик.

В казино ПОКЕРОК также доступна GG99 — линейка из 20+ игр с RTP 99%, включая слоты, настольные игры, видеопокер и аркады. Это весомое преимущество для новых игроков в дополнение к приветственным бонусам.

И ещё один повод подключиться уже сейчас: 27 августа состоится Friendly Tournament для партнёров ПОКЕРОК Partners. Успейте подключиться до 25 августа, чтобы принять участие!

Присоединяйтесь к ПОКЕРОК Partners и начинайте зарабатывать на своём трафике уже сейчас!
Composer в проде ломается не из-за пакетов, а из-за слабой дисциплины lock-файла

composer.lock — не артефакт «для локалки», а снимок dependency graph. В приложении он должен жить в репозитории; без него staging, CI и prod могут собрать разные деревья даже при одинаковом composer.json.

Правила, которые экономят часы:
composer install для деплоя и CI, update — только осознанно;
— не коммитить vendor, но кэшировать загрузки в пайплайне;
— фиксировать platform PHP/ext, если прод отличается от машины разработчика;
— проверять scripts: туда часто прячется побочный эффект сборки.

Есть наблюдение которое стоит проверить: большинство «мистических» падений после релиза связано не с Laravel, а с транзитивной зависимостью, подтянутой широким constraint вроде ^ без ревью diff в lock.

Минимальная гигиена: отдельный PR на обновление пакетов, просмотр changelog критичных библиотек, composer audit в CI и запрет ручного редактирования lock-файла. Composer должен быть повторяемым механизмом, а не рулеткой перед деплоем.
Filament ломается не в ресурсах, а в мелочах схемы и авторизации

Частая ошибка — тащить в админку «как в API»: отдельные сервисы, сложные DTO и магию в каждом поле. Filament лучше живёт, когда Form, Table и Action описывают один и тот же домен, а бизнес-логика вынесена в модели, policy и сервисы.

Проверь базовые вещи до первой страницы:
— видимость полей через hidden/visible, а не через if по всему компоненту;
— авторизацию на уровне policy, не только в кнопке;
— фильтры и сортировки на сервере, иначе таблица быстро начинает тормозить;
— повторяющиеся поля собери в схемы или traits, чтобы не плодить копии.

Ещё один частый провал — попытка сделать из Filament полноценный SPA. Он силён там, где нужен быстрый CRUD, вложенные relation managers, bulk actions и понятная админка для команды. Как только начинается тяжёлая интерактивность, сложные переходы состояния и много асинхронщины, лучше заранее проверить, не дешевле ли вынести это в отдельный экран.

Если держать логику рядом с доменом и не перегружать компоненты, Filament даёт очень быструю сборку админки без архитектурного мусора.
Forwarded from TopX Partners
This media is not supported in your browser
VIEW IN TELEGRAM
5️⃣КАНЬЕ УЭСТ - SOLD OUT!🤷🏻‍♂️

Пока все пересылали мемы и спорили, приедет ли Канье в Питер, билеты на его шоу раскупили буквально за пару часов...
Но мы подумали о наших подписчиках заранее и подготовились к солдауту за вас!

🎁 ЗАПУСКАЕМ РОЗЫГРЫШ 10 БИЛЕТОВ 🎁
→ На концерт КАНЬЕ УЭСТА В ОКТЯБРЕ ←

УСЛОВИЯ ПРОЩЕ САМЫХ ПРОСТЫХ:
👋 Быть подписанным на наш канал: @topxpartners
👋 Нажать на кнопку «ХОЧУ НА КАНЬЕ» под этим постом ⬇️


Всё, больше делать ничего не нужно! Просто жди 08.10 и забери свой билет на это легендарное событие.

💥 Подписывайся на TopX и до встречи на концерте!
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from high profit — low life
This media is not supported in your browser
VIEW IN TELEGRAM
Вечер перестает быть томным — у JUST новый CMO

Сегодня пяр-контора Джастов запустила очередной стрим-духовку о том, как легко оставаться креативным, когда в компании дохуя денег.

И все забили бы на него хуй, если бы не одна пикантная подробность — новым CMO в их конторе стал сам Евгений Юрьич.

Поздравим с назначением! Наконец-то среди этих бездарей появилась настоящая звезда маркетинга. Тем временем их состав пиздодуев, если верить достоверному источнику, не справился блять даже с банальным прогревом к этому великому назначению.

На самом дели анонс должен был быть в сентябре, но Зуев зачем то решил начать прогрев раньше и прямо на Ютуб трансляции стрима предложил мне стать их CMO!


И условия дали хуевые:
Зарплата для меня никогда не была принципиальной и их 8 000$ в месяц + KPI мне сильно жизнь не изменят, и от этого еще легче, даже если что то не пойдет я ни хуя не потеряю ну и иду я туда не ради денег ( 8к, ало, что? корм кошкам купить? )


Ну наконец-то в сфере кто-то получил работу! А не под зад и за порог нахуй.

High Profit — Low Life | Прислать сплетню
Forwarded from AffPapa! Клуб спящих бизнесменов! Потрачено!
VELORA новый бренд от MOTOR PARTNERS!

GEO: RU

🙂 Что получает партнер?

✔️Новый бренд с чистой базой для эффективного старта

✔️Стабильные платежки (мин. депозит ₽100–300)

✔️Гибкие модели сотрудничества под любые источники трафика


🔥 Станьте участником акции HOT SHARE от VELORA на эксклюзивных условиях:

➤ RevShare до 70%

➤ CPA до 120$

➤ Hybrid до $50 CPA + 50% RS


🪙 Для игроков - розыгрыш 1кг золота, стоимостью в 132.000$

🪙 Для партнеров - сообщи промо PACAN и получи +10% к RS

✉️Пиши менеджеру и начни лить трафик уже сегодня: @velora_partners
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from high profit — low life
This media is not supported in your browser
VIEW IN TELEGRAM
Вечер перестает быть томным — у JUST новый CMO

Сегодня пяр-контора Джастов запустила очередной стрим-духовку о том, как легко оставаться креативным, когда в компании дохуя денег.

И все забили бы на него хуй, если бы не одна пикантная подробность — новым CMO в их конторе стал сам Евгений Юрьич.

Поздравим с назначением! Наконец-то среди этих бездарей появилась настоящая звезда маркетинга. Тем временем их состав пиздодуев, если верить достоверному источнику, не справился блять даже с банальным прогревом к этому великому назначению.

На самом дели анонс должен был быть в сентябре, но Зуев зачем то решил начать прогрев раньше и прямо на Ютуб трансляции стрима предложил мне стать их CMO!


И условия дали хуевые:
Зарплата для меня никогда не была принципиальной и их 8 000$ в месяц + KPI мне сильно жизнь не изменят, и от этого еще легче, даже если что то не пойдет я ни хуя не потеряю ну и иду я туда не ради денег ( 8к, ало, что? корм кошкам купить? )


Ну наконец-то в сфере кто-то получил работу! А не под зад и за порог нахуй.

High Profit — Low Life | Прислать сплетню
Octane ломает не Laravel, а привычки вокруг него: вот где чаще всего течёт память

Octane полезен там, где важны низкая задержка и высокая плотность запросов, но он меняет модель жизни приложения. Код перестаёт умирать после каждого запроса, а значит, любая «мелочь» может стать утечкой состояния.

Проверь в первую очередь:
— статические свойства и одиночки, которые копят данные между запросами;
— кеш в памяти процесса, который никто не сбрасывает;
— замыкания с захваченными объектами;
— мутируемые синглтоны в сервис-контейнере;
— соединения и клиентские объекты, которые создаются один раз и живут слишком долго.

Отдельный класс проблем — worker-safe код. Если пакет безопасен в обычном PHP-FPM, это ещё не значит, что он безопасен под долгоживущим воркером. Любая глобальная переменная, временный хелпер или «удобный» static cache могут дать странные побочные эффекты уже на втором запросе. Перед включением Octane прогоняй типовой сценарий под нагрузкой и смотри не на скорость, а на стабильность памяти и предсказуемость ответов.

Хорошее правило простое: всё, что должно быть уникальным для запроса, не должно жить дольше запроса. Если это соблюдено, Octane даёт прирост без сюрпризов; если нет — он просто ускоряет баги.
Forwarded from AffPapa! Клуб спящих бизнесменов! Потрачено!
VELORA новый бренд от MOTOR PARTNERS!

GEO: RU

🙂 Что получает партнер?

✔️Новый бренд с чистой базой для эффективного старта

✔️Стабильные платежки (мин. депозит ₽100–300)

✔️Гибкие модели сотрудничества под любые источники трафика


🔥 Станьте участником акции HOT SHARE от VELORA на эксклюзивных условиях:

➤ RevShare до 70%

➤ CPA до 120$

➤ Hybrid до $50 CPA + 50% RS


🪙 Для игроков - розыгрыш 1кг золота, стоимостью в 132.000$

🪙 Для партнеров - сообщи промо PACAN и получи +10% к RS

✉️Пиши менеджеру и начни лить трафик уже сегодня: @velora_partners
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from AffPapa! Клуб спящих бизнесменов! Потрачено!
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Новый проект от NOVA PARTNERS!

Совсем скоро запуск ШЕСТОГО проекта на RU GEO от создателей APEX, EVA, KUSH, BANDA и LEEBET!

👑 Что ждет партнеров:

🟣 RevShare без переноса минусов
🟣 Чистая база —> высокая конверсия
🟣 Медиа поддержка топовых стримеров
🟣 Экосистема ретена для удержания игроков

👑 Что ждет игроков:

🟣 Выводы без верифа
🟣 Кэшбэк до 10% еженедельно с низким вейджером
🟣 Рэйкбэк для всех игроков
🟣 Уникальная VIP-программа
🟣 Поддержка: 24/7

👉 Пиши своему менеджеру уже сейчас, чтобы запуститься первым — @Daria_NovaPartners
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from AffPapa! Клуб спящих бизнесменов! Потрачено!
Там Бласк придумал сканировать/скриншотить сайты что бы мониторить размещения, по сути они нашли все сайты аффилиатов, каждый день скриншотят их и фиксируют, что бы контролировать размещения слота

ЧТо бы избежать хуйни когда менеджер раз в квартал присылает тебе один скрин "всё супер, лого стоит" — а по факту оно там провисело два дня из тридцати, и ты про это узнаёшь только когда партнёр уже слился

Пока выкатывают вроде как только Бразилию, но на очереди и другие ГЕО! Плюсы очевидны:
• смотреть на конкурентов (в Бразилии мы нашли 315 сайтов)
• смотреть, кто размещается у конкурентов
• смотреть обьем трафика

Тоже самое вайб кодить в NeBlask я не планирую, может чуть попозже, когда они все ГЕО выкатят и я смогу просто собрать все сайты котоыре они мониторят, короче если это кому надо, идем в Blask! А NeBlask подтянется позже!

P.S. На скрине - размещение бренда Bet da Sorte
Forwarded from AffPapa! Клуб спящих бизнесменов! Потрачено!
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Новый проект от NOVA PARTNERS!

Совсем скоро запуск ШЕСТОГО проекта на RU GEO от создателей APEX, EVA, KUSH, BANDA и LEEBET!

👑 Что ждет партнеров:

🟣 RevShare без переноса минусов
🟣 Чистая база —> высокая конверсия
🟣 Медиа поддержка топовых стримеров
🟣 Экосистема ретена для удержания игроков

👑 Что ждет игроков:

🟣 Выводы без верифа
🟣 Кэшбэк до 10% еженедельно с низким вейджером
🟣 Рэйкбэк для всех игроков
🟣 Уникальная VIP-программа
🟣 Поддержка: 24/7

👉 Пиши своему менеджеру уже сейчас, чтобы запуститься первым — @Daria_NovaPartners
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
😆😗😍😊😀 2️⃣ 👨‍🔬
( Остров проклятых )


😀😃😄😁😆😂🤣🥲
https://t.me/serg_accs_bot
https://t.me/googleadssp


🥲☺️😊😇🙂🙃😉
https://t.me/+_K1fUqPoJ8ExMWMy

🍏🍎🍐🍊🍋🍌🍉
https://t.me/+LdJ0ohSwKzQ5OWQ6
Please open Telegram to view this post
VIEW IN TELEGRAM
PHPUnit ломается не в тестах, а в договорённостях команды

Когда тесты становятся шумом, проблема обычно не в ассертах, а в стиле использования фреймворка: один тест проверяет пол-класса, другой зависим от порядка, третий подменяет всё подряд через мок.

Что держать в порядке:
— тестируйте поведение, а не реализацию;
— не смешивайте в одном тесте много причин падения;
— фикстуры делайте короткими и явными;
— моки ставьте только там, где есть внешний эффект или дорогая зависимость.

Отдельная ловушка — хрупкие assertions. Если тест проверяет массив целиком, строку целиком и ещё внутренние вызовы, он начинает падать от безобидного рефакторинга. Лучше проверять контракт: вход, выход, побочный эффект. Для Laravel-проектов это особенно заметно в сервисах, job’ах и интеграционных тестах.

И ещё правило: если тест нельзя прочитать за 10 секунд, его надо упростить. Хороший набор PHPUnit — это не максимум покрытия, а минимальный набор проверок, который ловит регрессии и не мешает двигать код.
Forwarded from high profit — low life
⚡️ AffPapa теперь официально принадлежит Иванову

Евгений Юрьич продолжает издеваться над опозорившимся этим летом AffPapa. Вслед за базой контактов к маэстро ушел еще и товарный знак конторы...

Как проверить:

1. Перейти по ссылке
2. Ввести 2026793242
3. Ахуеть от беспомощности AffPapa

Такие сегодня новости, такая life...

High Profit — Low Life | Прислать сплетню