Библиотека пхпшника | 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
Как создать агента с помощью Laravel

Недавно Thorsten Ball опубликовал статью «How to Build an Agent», которая быстро стала популярной. Вдохновившись ею, автор адаптировал подход для Laravel, добавив собственные улучшения. Вместо того чтобы обсуждать, какой агент лучше, он предлагает разобраться, как они работают.

Агент — это по сути цикл, который выполняется до достижения поставленной цели. Он использует инструменты (например, функции), заранее определённые в коде, и вызывает их при необходимости. Это позволяет модели LLM выполнять действия, выходящие за пределы её контекста.

Для создания агента в Laravel необходимо:
🔸 Установить пакет PrismPHP для работы с LLM.
🔸 Создать команду с помощью Artisan: php artisan make:command Agent.
🔸 Настроить взаимодействие с LLM, например, с использованием API Anthropic или OpenAI.
🔸 Добавить инструменты (tools) для работы с кодом, такие как чтение, редактирование и перечисление файлов.

Пример кода агента, который может создавать и редактировать файлы в проекте, приведён в статье: How to Build an Agent with Laravel.

Библиотека пхпшника #буст
🤔3❤‍🔥2
Настояться — идеальная стратегия, как минимум в половине случаев решение вообще не нужно принимать, т. к. проблема решается сама собой.

🤔 Или нет?

🐸Библиотека пхпшника #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
🎨 Автодополнение классов Tailwind CSS

Если вы используете Tailwind CSS, PhpStorm поддерживает интеллектуальное автодополнение классов прямо в HTML‑файлах. Это особенно удобно, когда вы работаете с динамическими классами или кастомными конфигурациями.

🔧 Как настроить:
Убедитесь, что у вас установлен и активирован плагин HTML Tools. Это можно проверить в настройках: Ctrl+Alt+SPluginsHTML Tools.

PhpStorm автоматически распознаёт классы Tailwind CSS и предлагает автодополнение, подсветку синтаксиса и линтинг прямо в редакторе.

📌 Благодаря этому:
🔸 Вы получаете подсказки по доступным классам и их параметрам.

🔸 Ускоряется процесс написания стилей без необходимости переключаться между редактором и документацией.

🔸 Улучшается качество кода за счёт встроенной проверки на ошибки.

Библиотека пхпшника #буст
👍1
🔐 Баг-хантеры, будьте готовы: критическая уязвимость в 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