Библиотека пхпшника | 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
🚀 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
💬В Laravel есть хелпер Number для простого и удобного форматирования цифровых значений.

Библиотека пхпшника #буст
🔥10👍4
Паттерн Спецификация: реальный опыт применения

Когда репозиторий начинает разрастаться от десятков методов вроде getByThisAndThat(), код становится тяжёлым и неудобным. В таких случаях часто вспоминают паттерн Specification — особенно после хвалебных отзывов на собеседованиях.
Но помогает ли он на практике?

🧱 Что такое «Спецификация»?
Идея проста: вынести логику критериев выборки в отдельные классы, чтобы не засорять бизнес-логику и модель.
Пример из оригинала (Фаулер): решаем, в какой контейнер положить груз — не через ифы, а через метод isSatisfiedBy().

📦 Варианты спецификаций:
Hardcoded — простые классы с жёсткими условиями.
Параметрируемые — с конфигурацией через свойства.
Композитные — объединяют другие спецификации и поддерживают AND/OR/NOT.

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

$specification = $loyaltyProgram->createInitialCardIssuingSpecification();
$cards = $cardRepository->findAllBySpecification($specification);

При этом, за фасадом — сложная и кастомная реализация, где каждая спецификация превращается в SQL-запрос, в том числе с поддержкой bulk insert и пагинации.

⚠️ Где ловушка?
Когда спецификации усложняются, репозитории превращаются в мешанину match, if, IS NULL, кастомных условий и бэкфлипов.

🧩 Выводы:
✔️ Использовать, если нужно чётко отделить бизнес-логику от инфраструктуры.
Не использовать как «универсальный антидот» от методов getByXAndY() в репозиториях.
🧼 Иногда проще честно написать findByDateAndStatus().

🔁 Ключевая идея — спецификация — это не про репозиторий, а про знание. Описание того, что значит «подходит». И оно может жить в домене, даже если не содержит SQL.

А вы используете этот паттерн у себя? Или предпочитаете оставаться на стороне простых методов?

🔗 Хабр

Библиотека пхпшника
5🔥3🤔1
Развертывание приложений Laravel на Laravel Cloud с помощью MongoDB Atlas

Разворачивать приложение раньше было больно. Потом появился Forge. А теперь — Laravel Cloud: полноценная платформа как сервис, где развертывание Laravel-приложения занимает меньше минуты и не требует возни с серверами, настройками и uptime-танцами.

🧰 В свежем туториале показали, как:
— задеплоить Laravel на Laravel Cloud
— подключить MongoDB Atlas, даже несмотря на отсутствие нативной поддержки (расширение mongodb уже встроено)

🔥 Фишка: можно подключить MongoDB Atlas в пару шагов — просто скопируйте строку подключения, добавьте переменную окружения, и всё взлетит после redeploy.

⏱️ Пример из статьи: первое успешное развёртывание — за 49 секунд.

🔗 Полный гайд: от подключения репозитория до настройки секрета MONGODB_URL. Скриншоты, логи, возможные ошибки и как их обойти — всё на месте.

📍 Идеально подойдёт тем, кто:
— хочет быстрый прод для pet-проекта
— устал руками разворачивать сервера
🔄 Перекладывать JSON теперь проще

Составили промпт, который поможет в ежедневной рутине перемещения жсонов. Достаточно вставить структуру объекта и необходимый формат.

Промпт:
Напиши функцию на PHP, которая преобразует JSON-объект с полями [Ваш JSON] в [Ваш формат]. Функция должна корректно обрабатывать ошибки парсинга JSON, возвращая либо строку, где произошла ошибка, либо ошибку.


👇 JSONо-укладчики «+» в чат

🐸Библиотека пхпшника #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱8😢2😁1
Git Notes

В статье рассказано о том, как можно использовать малозаметную, но полезную функцию Git — Git Notes — для добавления дополнительной информации к коммитам после их создания. В отличие от стандартных коммитов, которые создают новые объекты при изменении данных (например, при изменении сообщения коммита), Git Notes позволяют прикрепить к существующему коммиту дополнительную информацию, не меняя его.

Git Notes позволяют добавить различные заметки к коммиту с помощью команды git notes add. Эти заметки хранятся в отдельной ветке notes/commits и могут быть сгруппированы по категориям через флаг --ref. Например, можно создать разные типы заметок для одного и того же коммита — заметки, связанные с проверкой качества или тестированием кода.

Функционал Git Notes особенно полезен в таких случаях, как хранение обсуждений и комментариев к pull request'ам (PR). В проекте Symfony используют специальный инструмент для объединения веток, который автоматически сохраняет комментарии из GitHub в виде заметок Git Notes. Эти комментарии прикрепляются к коммитам, что позволяет отслеживать обсуждения даже после смены платформы или удаления исходного PR. Таким образом, при необходимости можно получить доступ к обсуждению, сохранив его вместе с кодом.

Для того чтобы просмотреть или извлечь эти заметки, можно использовать команду git log --notes или настраивать git fetch, чтобы автоматически загружать заметки с сервера.

👉 Читать статью

Библиотека пхпшника
👍5
Какое ревью в вашем PHP-коде было самым спорным?

🤬 Кто-то не принимает match в проде, кто-то на дух не переносит Service-суффиксы в названиях.
А может, у вас спор был из-за static методов, facade-ов или неправильного DI?

Поделитесь:
• Из-за чего начался спор?
• Кто в итоге «победил»?
• Как теперь пишете код?

💬 Интересно собрать реальные кейсы — и заодно понять, где граница между чистым кодом и субъективщиной.

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

Выберите курс, который поможет сделать следующий шаг ⬇️

🚀 Для тех, кто начинает путь в IT:

Основы IT для непрограммистов
Программирование на Python (обновлённый)
Frontend-разработчик с нуля: HTML, CSS, JavaScript

🧠 Для будущих и настоящих Data Scientist'ов:

ML для старта в Data Science (начинается в сентябре)
Базовые модели ML и приложения
Математика для Data Science
AI-агенты для DS-специалистов (скоро второй поток)

🛠️ Для опытных разработчиков, готовых к росту:

Алгоритмы и структуры данных
Архитектуры и шаблоны проектирования

Независимо от вашей цели, у нас есть курс, который поможет её достичь. Переходите в Proglib Academy, выбирайте свой путь и инвестируйте в навыки, которые всегда будут в цене!
🛠 PhpStorm‑лайфхак: ускоряем IDE, исключив внешние библиотеки из индексации

Когда в проекте много зависимостей (vendor/, node_modules/ и т.п.), PhpStorm может тормозить из-за длительной индексации.

Простое решение: кликните папку → Mark Directory as → Excluded.

🚀 После этого IDE быстрее работает, особенно при автокомплите и поиске по проекту.

Попробуйте — в крупных проектах сразу почувствуете разницу!

Библиотека пхпшника #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱11👍3😁1😢1🌚1