🧩 Ваш базовый стек для старта PHP-проекта
Когда стартуешь новый проект, нет времени выбирать идеальные инструменты — хочется просто взять знакомое и начать пилить фичи. У каждого разработчика со временем формируется свой «боевой» набор.
У меня сейчас примерно так:
Не идеальный набор, но позволяет быстро развернуть окружение и приступить к делу. Всё остальное — по мере надобности.
❓ А у вас как? Что летит в бой первым?
👇 Делитесь своими «must-have» в комментариях!
Библиотека пхпшника #междусобойчик
Когда стартуешь новый проект, нет времени выбирать идеальные инструменты — хочется просто взять знакомое и начать пилить фичи. У каждого разработчика со временем формируется свой «боевой» набор.
У меня сейчас примерно так:
– Laravel– Laravel Breeze (или Sanctum, если нужен API)– Filament для админки– Spatie-пакеты: roles, media, permissions– Docker с Sail или кастомной сборкой– Tailwind, если есть фронт
Не идеальный набор, но позволяет быстро развернуть окружение и приступить к делу. Всё остальное — по мере надобности.
❓ А у вас как? Что летит в бой первым?
👇 Делитесь своими «must-have» в комментариях!
Библиотека пхпшника #междусобойчик
❤1
Если у вас в коде PHP-строка с HTML, просто поставьте курсор внутри неё и нажмите Alt+Enter → выберите Edit HTML content. PhpStorm откроет встроенный HTML‑редактор — с подсветкой, автокомплитом и линтингом внутри IDE.
📌 Всем, кто работает с шаблонами или Email‑шаблонами внутри PHP — это реальная экономия времени!
Попробуйте прямо сейчас — и убедитесь сами 😊
Библиотека пхпшника #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1
Библиотеки для работы с PDF
PDF-файлы часто используются в веб-приложениях для автоматического создания счетов, отчетов и других документов. PHP предлагает несколько популярных библиотек для работы с PDF, каждая из которых имеет свои преимущества и ограничения.
В статье представлены следующие:
FPDF — это простая библиотека для создания PDF-файлов без сторонних зависимостей. Она позволяет генерировать PDF с нуля и проста в освоении, что делает её подходящей для небольших проектов. Недостатки: отсутствие поддержки HTML/CSS и ограниченные возможности, что усложняет создание сложных макетов.
TCPDF расширяет возможности FPDF, добавляя поддержку HTML, Unicode и сложных макетов. Подходит для многоязычных документов, может встраивать баркоды и QR-коды. Однако требует больше памяти и может быть сложна для новичков.
mPDF ориентирована на преобразование HTML в PDF, что упрощает создание документов на основе веб-страниц. Поддерживает шрифты и языки с направлением текста справа налево, но может быть медленной с большими документами и требует значительных ресурсов.
Snappy (wkhtmltopdf) — это обертка для инструмента wkhtmltopdf, известного своей высокой точностью при преобразовании HTML в PDF, включая поддержку JavaScript. Отличается скоростью, но требует установки внешнего инструмента и ориентирован на создание статичных PDF.
PDFParser предназначен для извлечения текста, изображений и метаданных из PDF, а не для их создания. Подходит для индексирования и анализа PDF, однако ограничен в работе со сложными и защищенными файлами.
SetaPDF — коммерческая библиотека с возможностями для заполнения форм, цифровой подписи и шифрования. Подходит для корпоративных приложений с высокими требованиями безопасности, но требует лицензии.
FPDI — расширение для FPDF и TCPDF, которое позволяет импортировать страницы из существующих PDF. Подходит для объединения и редактирования PDF, но не для создания файлов с нуля.
PDFMerger — библиотека для объединения PDF. Проста в использовании и подходит для быстрого объединения нескольких файлов, но не для их редактирования.
Dompdf поддерживает HTML5 и CSS3, что упрощает преобразование веб-страниц в PDF. Подходит для небольших и средних проектов, но может потреблять много ресурсов при обработке сложных макетов.
Краткие рекомендации по выбору
🔸FPDF — для простых PDF с минимальными функциями.
🔸TCPDF — для создания сложных документов с поддержкой HTML и Unicode.
🔸mPDF — для проектов, где PDF создаются на основе HTML.
🔸Snappy — для точного преобразования HTML/CSS в PDF с поддержкой JavaScript.
🔸PDFParser— для извлечения информации из PDF.
🔸SetaPDF — для защищённых корпоративных документов с подписями и шифрованием.
🔸FPDI — для редактирования и объединения PDF.
🔸PDFMerger — для быстрого объединения нескольких PDF.
🔸Dompdf — для проектов, где требуется HTML в простом или среднем формате.
Выбор библиотеки зависит от задач проекта: для конвертации HTML лучше подходят mPDF или Snappy, для безопасной обработки документов — SetaPDF, для простых PDF — FPDF.
PDF-файлы часто используются в веб-приложениях для автоматического создания счетов, отчетов и других документов. PHP предлагает несколько популярных библиотек для работы с PDF, каждая из которых имеет свои преимущества и ограничения.
В статье представлены следующие:
FPDF — это простая библиотека для создания PDF-файлов без сторонних зависимостей. Она позволяет генерировать PDF с нуля и проста в освоении, что делает её подходящей для небольших проектов. Недостатки: отсутствие поддержки HTML/CSS и ограниченные возможности, что усложняет создание сложных макетов.
TCPDF расширяет возможности FPDF, добавляя поддержку HTML, Unicode и сложных макетов. Подходит для многоязычных документов, может встраивать баркоды и QR-коды. Однако требует больше памяти и может быть сложна для новичков.
mPDF ориентирована на преобразование HTML в PDF, что упрощает создание документов на основе веб-страниц. Поддерживает шрифты и языки с направлением текста справа налево, но может быть медленной с большими документами и требует значительных ресурсов.
Snappy (wkhtmltopdf) — это обертка для инструмента wkhtmltopdf, известного своей высокой точностью при преобразовании HTML в PDF, включая поддержку JavaScript. Отличается скоростью, но требует установки внешнего инструмента и ориентирован на создание статичных PDF.
PDFParser предназначен для извлечения текста, изображений и метаданных из PDF, а не для их создания. Подходит для индексирования и анализа PDF, однако ограничен в работе со сложными и защищенными файлами.
SetaPDF — коммерческая библиотека с возможностями для заполнения форм, цифровой подписи и шифрования. Подходит для корпоративных приложений с высокими требованиями безопасности, но требует лицензии.
FPDI — расширение для FPDF и TCPDF, которое позволяет импортировать страницы из существующих PDF. Подходит для объединения и редактирования PDF, но не для создания файлов с нуля.
PDFMerger — библиотека для объединения PDF. Проста в использовании и подходит для быстрого объединения нескольких файлов, но не для их редактирования.
Dompdf поддерживает HTML5 и CSS3, что упрощает преобразование веб-страниц в PDF. Подходит для небольших и средних проектов, но может потреблять много ресурсов при обработке сложных макетов.
Краткие рекомендации по выбору
🔸FPDF — для простых PDF с минимальными функциями.
🔸TCPDF — для создания сложных документов с поддержкой HTML и Unicode.
🔸mPDF — для проектов, где PDF создаются на основе HTML.
🔸Snappy — для точного преобразования HTML/CSS в PDF с поддержкой JavaScript.
🔸PDFParser— для извлечения информации из PDF.
🔸SetaPDF — для защищённых корпоративных документов с подписями и шифрованием.
🔸FPDI — для редактирования и объединения PDF.
🔸PDFMerger — для быстрого объединения нескольких PDF.
🔸Dompdf — для проектов, где требуется HTML в простом или среднем формате.
Выбор библиотеки зависит от задач проекта: для конвертации HTML лучше подходят mPDF или Snappy, для безопасной обработки документов — SetaPDF, для простых PDF — FPDF.
❤6👍3
Forwarded from Библиотека программиста | программирование, кодинг, разработка
Вайб-кодинг — это когда человек не пишет код вообще. Все задачи выполняет ИИ, будь то написание, исправление или чтение кода. Человек может не быть программистом или просто не иметь желания работать с кодом. Важно, что он лишь задаёт «вайб» задачи, а ИИ её решает.
Если вы работаете с инструментом вроде Cursor, используя его функции для создания кода и проверки его результата, то это не вайб-кодинг, а разработка с ИИ-инструментами (AI-assisted coding). Здесь вы, как разработчик, активно взаимодействуете с ИИ, но не теряете контроль над процессом.
А вот когда человек Lovable/v0/Bolt для создания сайта или автоматизации без заглядывания в код — это уже вайб-кодинг. И это прекрасно, потому что даёт возможность создавать решения без необходимости учить программирование. И с каждым годом таких людей будет становиться больше.
Отличаются и подходы. Когда разработчики работают с ИИ, они ставят задачи более детально и структурировано, например, указывают конкретные модули или шаги реализации. Вайб-кодеры, напротив, ставят задачи через описание желаемого функционала.
И главная проблема вайб-кодеров — это технический долг. Накопившиеся ошибки, дублированные функции и разные реализации могут привести к тому, что ИИ перестанет справляться с задачами.
Могли ли вы пару лет назад представить, что такое количество рутины в работе будет автоматизировано?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3😢1🥱1
💻 Подборка новостей по PHP за неделю:
🔹 PHP 8.5.0 Alpha 1 — первая альфа-версия новой ветки PHP уже доступна для тестирования. Финальный релиз ожидается в ноябре. Среди новшеств — нативные функции array_first() и array_last().
🔹 Релизы PHP 8.1.33, 8.2.29 и 8.4.10 — это важные обновления безопасности. Рекомендуется обновить текущие установки как можно скорее.
🔹 Symfony 30 июня — 6 июля 2025 года — продолжается активная разработка Symfony 8.0: удаляются устаревшие возможности, классы получают финальный статус. Также опубликованы два кейса использования Symfony в продакшене.
🔹 Laravel: советы по find() и first() — сообщество делится малоизвестными, но полезными приёмами эффективного использования методов
Библиотека пхпшника #свежак
🔹 PHP 8.5.0 Alpha 1 — первая альфа-версия новой ветки PHP уже доступна для тестирования. Финальный релиз ожидается в ноябре. Среди новшеств — нативные функции array_first() и array_last().
🔹 Релизы PHP 8.1.33, 8.2.29 и 8.4.10 — это важные обновления безопасности. Рекомендуется обновить текущие установки как можно скорее.
🔹 Symfony 30 июня — 6 июля 2025 года — продолжается активная разработка Symfony 8.0: удаляются устаревшие возможности, классы получают финальный статус. Также опубликованы два кейса использования Symfony в продакшене.
🔹 Laravel: советы по find() и first() — сообщество делится малоизвестными, но полезными приёмами эффективного использования методов
find()
и first()
в Eloquent.Библиотека пхпшника #свежак
❤3
Forwarded from Библиотека задач по PHP | тесты, код, задания
Что выведет код в PHP 7.4+?
Anonymous Quiz
38%
Parse error: syntax error, unexpected '_00'
15%
10
46%
1000
1%
1
🤔23🥰2😁1
☝️ Последний шанс купить курсы Proglib Academy с доступом навсегда!
Это не просто летняя распродажа, это финал эпохи. Мы дарим скидку 40% на все курсы, включая полностью обновлённый курс по Python (предложение НЕ ДЕЙСТВУЕТ только на курс по AI-агентам для DS-специалистов).
Но главное: с 1 августа доступ ко всем новым курсам станет ограниченным. Успейте инвестировать в свои знания на самых выгодных условиях!
👉 Выбрать курс
Это не просто летняя распродажа, это финал эпохи. Мы дарим скидку 40% на все курсы, включая полностью обновлённый курс по Python (предложение НЕ ДЕЙСТВУЕТ только на курс по AI-агентам для DS-специалистов).
Но главное: с 1 августа доступ ко всем новым курсам станет ограниченным. Успейте инвестировать в свои знания на самых выгодных условиях!
👉 Выбрать курс
❤1
⌨️ Топ-вакансий по PHP за неделю
Backend Team Lead (PHP) — 350 000 — 400 000 ₽ удалёнка (Москва)
Senior PHP Developer (Yii2) — от 4000 $, удалёнка (Калифорния)
Senior PHP разработчик — от 250 000 до 320 000 ₽, Удалёнка (Москва)
➡️ Еще больше топовых вакансий — в нашем канале PHP Jobs
Backend Team Lead (PHP) — 350 000 — 400 000 ₽ удалёнка (Москва)
Senior PHP Developer (Yii2) — от 4000 $, удалёнка (Калифорния)
Senior PHP разработчик — от 250 000 до 320 000 ₽, Удалёнка (Москва)
➡️ Еще больше топовых вакансий — в нашем канале PHP Jobs
Проблема: необходимо распределить трафик между несколькими UDP-серверами.
Решение: в книге "Nginx Cookbook: Advanced Recipes for High-performance Load Balancing" автор показывает использование модуля stream с параметром udp для балансировки нагрузки на уровне транспортного слоя.
Пример кода:
stream {
upstream ntp {
server ntp1.example.com:123 weight=2;
server ntp2.example.com:123;
}
server {
listen 123 udp;
proxy_pass ntp;
}
}
Преимущества:
— Поддержка балансировки для UDP-сервисов.
— Гибкая настройка весов серверов.
— Резервирование серверов для повышения надёжности.
Еще больше полезных книг — в нашем канале @progbook
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Внедрение зависимостей в PHP: от основ до фреймворков
Если в коде появляются
📌 Что в статье:
🧱 Часть 1: от жёстких связей к своему DI-контейнеру
🔸 Почему
🔸 Как перейти от конкретных реализаций к интерфейсам и внедрению зависимостей через конструктор
🔸 Что такое инверсия зависимостей (DIP) и как DI помогает её реализовать
🔸 Пошаговая реализация собственного DI-контейнера с autowiring: внедрение зависимостей через рефлексию, поддержка singleton/prototype, регистрация скалярных параметров, реализация PSR-11
⚙️ Часть 2: как это делают фреймворки
💡 Symfony
Ручная регистрация, YAML-конфигурации, autowire/autoconfigure — полный контроль.
💡 Laravel
Контейнер
💡 Yii3
Контейнер через массив конфигураций, работа с
🔍 В итоге:
Пошагово разобрано, как перейти от жёстких зависимостей к гибкому DI.
Создан мини-контейнер с поддержкой автосборки зависимостей
📚 Отличный материал для начинающих и тех, кто хочет разобраться в архитектуре фреймворков на более глубоком уровне.
👉 Хабр
Если в коде появляются
new
, которые плодят жёсткие зависимости — пора разобраться с внедрением зависимостей (Dependency Injection) и понять, как работает DI-контейнер.📌 Что в статье:
🧱 Часть 1: от жёстких связей к своему DI-контейнеру
🔸 Почему
Cart
не должен сам создавать SimpleCalculator
и SimpleStorage
🔸 Как перейти от конкретных реализаций к интерфейсам и внедрению зависимостей через конструктор
🔸 Что такое инверсия зависимостей (DIP) и как DI помогает её реализовать
🔸 Пошаговая реализация собственного DI-контейнера с autowiring: внедрение зависимостей через рефлексию, поддержка singleton/prototype, регистрация скалярных параметров, реализация PSR-11
⚙️ Часть 2: как это делают фреймворки
💡 Symfony
Ручная регистрация, YAML-конфигурации, autowire/autoconfigure — полный контроль.
💡 Laravel
Контейнер
Illuminate\Container
, удобные bind()
и singleton()
, быстрая интеграция.💡 Yii3
Контейнер через массив конфигураций, работа с
Reference
, интеграция с yiisoft/injector
.🔍 В итоге:
Пошагово разобрано, как перейти от жёстких зависимостей к гибкому DI.
Создан мини-контейнер с поддержкой автосборки зависимостей
📚 Отличный материал для начинающих и тех, кто хочет разобраться в архитектуре фреймворков на более глубоком уровне.
👉 Хабр
👍4🔥2
php-internal/dload
Библиотека предназначена для упрощения процесса загрузки бинарных файлов из релизных активов на GitHub. Это особенно полезно для PHP-проектов, которым необходимо интегрировать сторонние инструменты или зависимости в виде бинарных файлов, таких как компиляторы, утилиты или другие исполнимые файлы.
Основные возможности
🔸 Автоматическая загрузка: DLoad позволяет автоматически скачивать необходимые бинарные файлы из релизных активов GitHub, что упрощает процесс интеграции внешних инструментов в проект.
🔸 Управление версиями: Библиотека помогает управлять версиями загружаемых бинарных файлов, обеспечивая соответствие между версией инструмента и версией вашего проекта.
🔸 Интеграция с Composer: DLoad может быть интегрирована с Composer, что позволяет автоматически загружать и обновлять бинарные зависимости при установке или обновлении пакетов.
Применение
DLoad полезна в сценариях, когда проект зависит от внешних бинарных инструментов, которые необходимо интегрировать в процесс сборки или разработки. Это может включать в себя такие задачи, как компиляция, обработка изображений, генерация PDF-файлов и другие операции, требующие использования сторонних исполнимых файлов.
🔗 Github
Библиотека пхпшника #инструменты
Библиотека предназначена для упрощения процесса загрузки бинарных файлов из релизных активов на GitHub. Это особенно полезно для PHP-проектов, которым необходимо интегрировать сторонние инструменты или зависимости в виде бинарных файлов, таких как компиляторы, утилиты или другие исполнимые файлы.
Основные возможности
🔸 Автоматическая загрузка: DLoad позволяет автоматически скачивать необходимые бинарные файлы из релизных активов GitHub, что упрощает процесс интеграции внешних инструментов в проект.
🔸 Управление версиями: Библиотека помогает управлять версиями загружаемых бинарных файлов, обеспечивая соответствие между версией инструмента и версией вашего проекта.
🔸 Интеграция с Composer: DLoad может быть интегрирована с Composer, что позволяет автоматически загружать и обновлять бинарные зависимости при установке или обновлении пакетов.
Применение
DLoad полезна в сценариях, когда проект зависит от внешних бинарных инструментов, которые необходимо интегрировать в процесс сборки или разработки. Это может включать в себя такие задачи, как компиляция, обработка изображений, генерация PDF-файлов и другие операции, требующие использования сторонних исполнимых файлов.
🔗 Github
Библиотека пхпшника #инструменты
🤔3🔥2👍1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🚀 Давно хотите вкатиться в pet-проект, но все никак не решитесь?
Залетайте на roadmap.sh — там теперь есть раздел с проектами — по фронту, бэку и DevOps.
Идеи подойдут и джунам, и тем, кто уже видел
Выбираем проект, дописываем «..., но с AI» — и смело продаем как стартап. Даже если это TODO-лист.
🐸 Библиотека программиста
Залетайте на roadmap.sh — там теперь есть раздел с проектами — по фронту, бэку и DevOps.
Идеи подойдут и джунам, и тем, кто уже видел
docker-compose.override.yml
и не моргнул.Выбираем проект, дописываем «..., но с AI» — и смело продаем как стартап. Даже если это TODO-лист.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7👍5🔥1🥰1
Если вы часто устаете, меняете позу и вам болит спина — эти три секрета для вас:
1. Кресло наше всё
Первым делом нужно сменить кресло. Не офисное, не широкое — берём кресло с анатомической поддержкой, поддержкой головы и поясницы.
2. Power nap — короткий дневной сон
Говорят, Леонардо да Винчи тоже так делал: спал по 20 минут каждые четыре часа, чтобы быстро восстанавливаться. Научитесь засыпать за секунды: включаю фоновую музыку, режим «не беспокоить» на 15-20 минут, откидываете кресло — и спите.
3. Не пропускаем важное
После пробуждения первым делом проверяем уведомления — это помогает не упустить важное. Смотрим чаты задач, потом уже личные.
Такой 15–20 минут сна даёт заряд бодрости работать максимально продуктивно, не отвлекаясь.
А что помогает быть продуктивным вам?
Библиотека пхпшника #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
🧹 Команда дня: Удаление папки
📌 Зачем это нужно?
Иногда при работе с Composer могут возникать проблемы, такие как:
🔸 Ошибки при установке или обновлении зависимостей.
🔸 Конфликты версий пакетов.
🔸 Необходимость сбросить текущее состояние зависимостей и начать с чистого листа.
В таких случаях полезно полностью удалить папку
🛠️ Шаги для пересборки зависимостей:
Удалите папку
Очистите кеш Composer (необязательно, но рекомендуется):
Установите зависимости заново:
Эти шаги помогут вам начать с чистого состояния и устранить возможные проблемы с зависимостями.
⚠️ Важные замечания:
Не коммитьте папку
Проблемы с правами доступа: Если после удаления и повторной установки зависимостей возникают ошибки, связанные с правами доступа, убедитесь, что у вас есть необходимые разрешения на запись в директорию проекта.
✅ Когда использовать эту процедуру?
При возникновении ошибок при установке или обновлении зависимостей.
Если вы хотите сбросить текущее состояние зависимостей и начать с чистого листа.
При переключении между ветками в системе контроля версий, чтобы избежать конфликтов зависимостей.
Библиотека пхпшника #буст
vendor
и пересборка зависимостей📌 Зачем это нужно?
Иногда при работе с Composer могут возникать проблемы, такие как:
🔸 Ошибки при установке или обновлении зависимостей.
🔸 Конфликты версий пакетов.
🔸 Необходимость сбросить текущее состояние зависимостей и начать с чистого листа.
В таких случаях полезно полностью удалить папку
vendor
и файл composer.lock
, а затем заново установить все зависимости.🛠️ Шаги для пересборки зависимостей:
Удалите папку
vendor
и файл composer.lock
:rm -rf vendor composer.lock
Очистите кеш Composer (необязательно, но рекомендуется):
composer clear-cache
Установите зависимости заново:
composer install
Эти шаги помогут вам начать с чистого состояния и устранить возможные проблемы с зависимостями.
⚠️ Важные замечания:
Не коммитьте папку
vendor
в систему контроля версий: Рекомендуется добавлять её в .gitignore
, чтобы избежать излишнего увеличения размера репозитория. getcomposer.orgПроблемы с правами доступа: Если после удаления и повторной установки зависимостей возникают ошибки, связанные с правами доступа, убедитесь, что у вас есть необходимые разрешения на запись в директорию проекта.
✅ Когда использовать эту процедуру?
При возникновении ошибок при установке или обновлении зависимостей.
Если вы хотите сбросить текущее состояние зависимостей и начать с чистого листа.
При переключении между ветками в системе контроля версий, чтобы избежать конфликтов зависимостей.
Библиотека пхпшника #буст
👍3😁2❤1🤩1
«Как я делала читалку форматов EPUB, FB2, DOCX для онлайн-библиотеки»
Интересная статья про проект для чтения книг в различных форматах
🔗 Хабр
Интересная статья про проект для чтения книг в различных форматах
🔗 Хабр
❤2