Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
11.3K subscribers
1.33K photos
21 videos
26 files
4.02K links
Все самое полезное для пхпшника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/bca892d6

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Download Telegram
🔐 Баг-хантеры, будьте готовы: критическая уязвимость в RainLoop обнаружена!

Недавно один из участников программы Bug Bounty нашёл уязвимость в популярном, но устаревшем почтовом клиенте RainLoop. После быстрого реагирования, Beget принял решение отказаться от использования этого клиента и перевести всех пользователей на поддерживаемое решение.

💥 Как это произошло?
Исследователь, обнаружив уязвимость, нашёл путь для выполнения произвольных команд через уязвимость в функции десериализации. Вскоре стало понятно, что с помощью SSRF можно было бы легко обойти все защиты и получить доступ к конфиденциальным данным. В результате он получил доступ к важной информации пользователей компании, что подняло случай до уровня критической уязвимости.

🎉 Реакция Beget
Компания оперативно отреагировала на баг и даже назначила награду исследователю за его находку. Это подтверждает важность таких инициатив в сфере безопасности.

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

🔗 Хабр

Библиотека пхпшника
1👍1
🧑‍💻 Что за ужас тут творится

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

К нам пришёл подписчик с вопросом
Как отличить реальные проблемы в компании от простого непонимания процессов и культуры?


На практике важно учитывать сразу несколько аспектов, чтобы не спешить с выводами:

— Обратите внимание на то, как принимаются решения: формально через руководителей или неформально «по знакомству».

— Оцените, насколько корректно используется трекинг задач и документация — это показатель зрелости команды.

— Внимательно слушайте, какие вопросы задают другие: открыты ли коллеги к диалогу или предпочитают «молча работать».

— Спросите про KPI и цели: ясны ли вам критерии успеха и пути их достижения?

Помните, никто не идеален: везде есть проблемы, просто о них не все говорят.

💬 С какими «тревожными звоночками» вы сталкивались в новых командах? Поделитесь в комментариях 👇

P.S. Если хотите задать вопрос сообществу или поделиться историей, заполните нашу гугл-форму.

🐸Библиотека пхпшника #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Dead code detector

Библиотека для обнаружения неиспользуемого кода с помощью расширения PHPStan. Обнаруживает мертвые циклы, поддерживает такие библиотеки, как Symfony, Doctrine, PHPUnit и др. Может автоматически удалять неиспользуемый PHP-код.

Легко установить через:

composer require --dev shipmonk/dead-code-detector

🔗 Github

Библиотека пхпшника #инструменты
💯4
Чтобы подтвердить адрес электронной почты, какой флаг должен быть передан функции filter_var()?
Anonymous Quiz
14%
FILTER_VALIDATE_MAIL
17%
VALIDATE_EMAIL
63%
FILTER_VALIDATE_EMAIL
5%
VALIDATE_MAIL
How to: миграция больших баз данных в Laravel

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

Основная стратегия — это метод «Double Write + Backfill», который включает несколько шагов:

1. Добавление новых колонок или таблиц без удаления старых, чтобы данные продолжали работать.
2. Реализация логики «двойной записи»: во время обновлений и вставок данных записываются в обе колонки (старую и новую).
3. Заполнение новых данных с помощью команд Artisan для миграции существующих записей.
4. Подготовка плана отката на случай ошибок.
5. Переход на новую структуру после завершения миграции и перехода всех данных.

🔗 Medium

Библиотека пхпшника
4
Последний шанс залутать курсы Proglib Academy с выгодой 40% и пожизненным доступом.

До 1 августа действует скидка на курсы по математике для Data Science, алгоритмам и структурам данных, обновлённому Python, frontend-разработке с нуля, основам IT для непрограммистов, базовым моделям ML, а также архитектурам и шаблонам проектирования.

Выбираем и забираем 👈

P.S. Акция не распространяется на курсы «AI-агенты для DS-специалистов» и «ML для старта в Data Science».
🥱21👏1😁1
В PHP 8.5 появится опция INI Diff

Статья объясняет, как в PHP 8.5 с помощью опции --ini=diff можно легко выявить изменения в INI-конфигурации, которые отличаются от стандартных значений. Эта возможность полезна для отслеживания изменений в конфигурации PHP без необходимости вручную сравнивать текущие значения с настройками по умолчанию. Пример показан на Docker-контейнере с PHP 8.5, где можно увидеть, как изменения INI-файлов, например, в настройке memory_limit, отображаются при запуске контейнера. В статье также приводятся шаги для создания Docker-образа, который позволяет экспериментировать с этими новыми функциями.

🔗 Читать статью

Библиотека пхпшника
👍17🔥72
🧪 Команда дня: Запуск тестов только одного файла

📌 Команда:

phpunit путь/к/файлу/ТестКласс.php

Где ТестКласс.php — это файл с тестами, который вы хотите запустить.

🔍 Зачем это нужно?
При разработке или рефакторинге кода часто возникает необходимость быстро проверить работу конкретного теста или группы тестов. Запуск всех тестов может занять много времени, особенно в больших проектах. Используя команду выше, вы можете выполнить только нужный файл тестов, что ускоряет процесс разработки и отладки.

📝 Пример:
Предположим, у вас есть файл с тестами UserTest.php в директории tests/Feature/. Чтобы запустить только этот файл, выполните:

phpunit tests/Feature/UserTest.php

Это выполнит все тесты, определённые в классе UserTest, и выведет результаты в консоль.

⚙️ Дополнительные опции:

Запуск конкретного метода теста:
Если вы хотите выполнить только один метод теста из класса, используйте параметр --filter с указанием имени метода:

phpunit --filter testMethodName путь/к/файлу/ТестКласс.php

Замените testMethodName на имя метода, который вы хотите запустить.

Использование регулярных выражений:
Параметр --filter поддерживает регулярные выражения. Например, чтобы запустить все методы, начинающиеся с testUser, используйте:

phpunit --filter '/^testUser/' путь/к/файлу/ТестКласс.php

Это полезно, если вы хотите выполнить группу тестов, соответствующих определённому шаблону.

💡 Советы:

Проверка синтаксиса перед запуском:
Перед выполнением тестов рекомендуется проверить синтаксис PHP-файла:

php -l путь/к/файлу/ТестКласс.php

Это поможет избежать ошибок при запуске тестов.

Использование в CI/CD:
Если вы интегрируете тесты в систему непрерывной интеграции, убедитесь, что пути к тестовым файлам указаны корректно, и используйте соответствующие команды для запуска отдельных тестов или групп тестов.
🥱71
🚀 Pipe operator в PHP 8.5 — меньше вложенности, больше читаемости

PHP 8.5 завез мощную штуку — оператор пайпа (|>), и это реально меняет стиль кода.

Раньше:

$result = trim(str_shuffle(strtoupper("Hello World")));


Или ещё хуже — с кучей временных переменных:

$result = "Hello World";
$result = strtoupper($result);
$result = str_shuffle($result);
$result = trim($result);

Теперь:
$result = strtoupper("Hello World")
|> str_shuffle(...)
|> trim(...);

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

🎯 Реальный пример: обработка email'а из формы

$result = $_REQUEST['email']
|> fn($e) => strtolower($e)
|> fn($e) => filter_var($e, FILTER_VALIDATE_EMAIL)
|> fn($e) => sendEmail($e, "Welcome!");

echo $result ? "Sent!" : "Error";

🔥 Минимум шума, максимум сути.

Pipe — мелкая синтаксическая штука, но она делает код ближе к тому, как вы мыслите.
С PHP 8.5 пишем как люди.

🐸Библиотека пхпшника
Please open Telegram to view this post
VIEW IN TELEGRAM
👍37🤔10🔥8😢7😍1
💡 Чего мы ждём от обновлений

PHP активно развивается и курс этого развития зависит от сообщества. Давайте поделимся какие фичи ждём в следующем обновлении.

Например:
Асинхронность на уровне ядра: встроенная поддержка async/await упростит написание многозадачного кода.
Расширенный стандарт утилит: Больше array_*, инструменты инспекции, удобная дебага


🐸Библиотека пхпшника #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🐕‍🦺 Пет-проекты в резюме: как превратить фриланс и side-проекты в карьерный козырь

💻 Пилишь бота, калькулятор, парсер…
А потом открываешь резюме — и внезапно показать нечего. На самом деле твой неформальный опыт — это не «поигрался с кодом», а боевая прокачка. Главное — правильно оформить:

🛠 Пет-проекты, в которые ты вложил душу — это не хобби, это MVP
🕵️ Side-проекты — это не «с друзьями запускали что-то», а «работал в кросс-функциональной команде»
💸 Фриланс через брата жены — это тоже фриланс (и почти стартап)

⚡️ В статье:
— как вписать неформальный опыт в резюме без ощущения, что ты его придумываешь на ходу;
— как не испортить впечатление фразой «проект недоделан, но идея крутая»;
— как показать, что ты не просто что-то писал — ты решал задачи.

В общем, если твой гитхаб похож на кладбище хороших идей — пора его оцифровать в карьерный актив 🧠

🔗 Читать статью

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
«Что дал переход на zsh мне, как разработчику?»

Когда-то многие из нас просто писали команды в bash и не задумывались. Но однажды в команде сказали: «Ставь zsh — будет лучше». Почему? Аргументов не дали. Сегодня восполняем этот пробел — и особенно это будет полезно PHP-разработчикам.

🖥️Что такое Zsh?
Это оболочка, как и bash, только... мощнее. Благодаря плагинам, темам и расширениям zsh превращает ваш терминал в полноценный dev-инструмент. А если установить Oh My Zsh, становится еще проще:

— автокомплит команд по истории (как в IDE)
— подсветка синтаксиса прямо в консоли
— алиасы: gl вместо git pull, ci вместо composer install, и так далее
— темы вроде powerlevel10k: кастомизация отображения веток, путей, статуса команд

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

👉 Хабр
1
🌗 Айтишный культ темной темы в IDE

Темная тема давно стала визуальной нормой для нас — кто-то включил один раз и больше не возвращался. А кто-то сидит на светлой и не видит смысла менять.

За темную:

— Не слепит в темноте

— Глаза устают меньше

— Просто красиво

За светлую:

— Лучше читается при дневном свете

— Меньше проблем с контрастом

— Привычнее для документации и веба

А какой темой пользуетесь вы? Делитесь в коммментариях!

🐸Библиотека пхпшника #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
1🌚282🤩2
💻 Подборка новостей по PHP за неделю:​

🔹 Laravel 12.21 — появились атрибуты Singleton и Scoped для контейнера, метод query builder для проверки значений между двумя колонками, строгая валидация чисел и булевых значений.

🔹 Symfony 21–27 июля — активная подготовка к релизам Symfony 7.4 и 8.0: добавлен ObjectMapperAwareInterface, улучшены JsonStreamer и AssetMapper, удалены устаревшие фичи, включая автоматическое отображение Doctrine entity.

🔹 PHP 8.5.0 Alpha 2 — вышла вторая альфа-версия, приглашают к тестированию.

🔹 Livewire уязвимость (CVE-2025-54068) версии до 3.6.3 уязвимы к удалённому выполнению команд через обновление свойств компонента. Обновитесь немедленно.

🔹 Symfony AI новые компоненты для интеграции AI в PHP-приложения, от низкоуровневых библиотек до бандлов.

Библиотека пхпшника #свежак
🔥3🥰1
Какие из реализаций метода getName() не валидны в классе Child?
⌨️ Топ-вакансий по PHP за неделю

Backend-разработчик — от 1 800 до 3 100 $ удалёнка (Москва)

Backend Developer (PHP) Middle — 180 000 —‍ 300 000 ₽, удалёнка (Москва)

PHP-разработчик — от 2 500 до 3 000 $, Удалёнка (Москва)

PHP Developer (Symfony) — от 250 000 ₽, Удалёнка (Москва)

➡️ Еще больше топовых вакансий — в нашем канале PHP Jobs
👏1