TGViewer
Channel Public Channel
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

@phpproglib

Все самое полезное для пхпшника в одном канале.

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

Учиться у нас: clc.to/M561SQ

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

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Subscribers
10.5K
Photos
1.8K
Videos
31
Links
4.6K

Showing posts older than #5800 · Back to latest

Older Posts 20 shown
Post #5799 2.55K
#memes
  • 😁 18
  • 👾 2
Post #5798 3.14K
🔧 Нужен ли static в замыкании? Да — и вот почему

На первый взгляд, совет заменить обычную анонимную функцию на static в array_map может показаться чисто стилевым. Но за этой рекомендацией скрывается реальный прирост производительности. ⚡

📌 Что происходит:
– static-замыкания не привязаны к $this, а значит, не тащат за собой контекст объекта
– Это позволяет PHP быстрее освобождать память
– И в ряде случаев — существенно ускоряет выполнение кода

💡 Один из PR'ов в Ocramius/GeneratedHydrator показал: просто добавив static, удалось добиться ~15% ускорения. А бенчмарки дали ещё более радикальную разницу:

benchUsingStaticKeyword → 2.10MB / 3.70ms
benchNotUsingStaticKeyword → 71.30MB / 17.17ms

📉 Минус 30x по памяти, минус 4x по времени.
Чтобы внедрить это на постоянной основе, удобно использовать Rector с правилами StaticClosureRector и StaticArrowFunctionRector. Так все замыкания, где не используется $this, становятся static автоматически. 🛠️

✅ Быстрее
✅ Меньше памяти
✅ Автоматическая проверка в CI

👉 Читать статью
  • 👍 17
Post #5796 3.17K
🛠 PhpStorm‑лайфхак: ускоряем IDE, исключив внешние библиотеки из индексации

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

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

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

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

Библиотека пхпшника #буст
  • 🥱 11
  • 👍 3
  • 😁 1
  • 😢 1
  • 🌚 1
Post #5795 3.02K
Proglib Academy — это место, где вы превращаете теорию в практику. Здесь ваши знания становятся проектами для портфолио, а вы — более уверенным специалистом.

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

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

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

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

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

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

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

Независимо от вашей цели, у нас есть курс, который поможет её достичь. Переходите в Proglib Academy, выбирайте свой путь и инвестируйте в навыки, которые всегда будут в цене!
  • ❤ 3
  • 👍 1
Post #5794 2.54K
Какое ревью в вашем PHP-коде было самым спорным?

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

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

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

Библиотека пхпшника #междусобойчик
  • ❤ 1
Post #5793 2.59K
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
Post #5792 2.47K
🔄 Перекладывать JSON теперь проще

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

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


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

🐸Библиотека пхпшника #буст
  • 🥱 9
  • 😢 2
  • 😁 1
Post #5791 2.74K
#memes
  • 😁 37
  • 🔥 1
  • 🥱 1
Post #5790 2.63K
Развертывание приложений Laravel на Laravel Cloud с помощью MongoDB Atlas

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

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

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

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

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

📍 Идеально подойдёт тем, кто:
— хочет быстрый прод для pet-проекта
— устал руками разворачивать сервера
Post #5789 2.48K
Паттерн Спецификация: реальный опыт применения

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

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

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

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

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

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

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

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

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

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

🔗 Хабр

Библиотека пхпшника
  • ❤ 4
  • 🔥 3
  • 🤔 1
Post #5788 2.57K
💬В Laravel есть хелпер Number для простого и удобного форматирования цифровых значений.

Библиотека пхпшника #буст
  • 🔥 11
  • 👍 4
Post #5787 2.67K
⌨️ Топ-вакансий по 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
Post #5784 2.79K
💻 Подборка новостей по 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
Post #5783 2.51K
🌗 Айтишный культ темной темы в IDE

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

➖ За темную:

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

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

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

➖ За светлую:

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

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

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

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

🐸Библиотека пхпшника #междусобойчик
  • 🌚 29
  • ❤ 2
  • 🤩 2
Post #5782 2.66K
#memes
  • 🔥 16
  • 😁 6
  • ❤ 1
Post #5781 2.97K
«Что дал переход на zsh мне, как разработчику?»

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

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

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

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

👉 Хабр
  • ❤ 1
Post #5780 2.42K

Forwarded from Библиотека программиста

🐕‍🦺 Пет-проекты в резюме: как превратить фриланс и side-проекты в карьерный козырь

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

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

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

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

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

🐸 Библиотека программиста
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →