🛠️ Система очередей и Job'ов Laravel: От создания таблицы до развертывания в продакшене
Очереди в Laravel — незаменимый инструмент для обработки ресурсоёмких задач в фоне: отправка писем, обработка видео, нотификации и многое другое. В этой статье мы пошагово разберём весь процесс работы с job'ами — от создания нужных таблиц до запуска очередей в продакшене через Supervisor. Вы узнаете, как отслеживать и повторно запускать проваленные задания, автоматически чистить старые, настраивать задержки и количество попыток, а также использовать батчи для групповых операций. Если вы хотите уверенно управлять фоновыми задачами в Laravel — этот гайд станет вашей настольной инструкцией.
👉 Читать статью
Библиотека пхпшника
Очереди в Laravel — незаменимый инструмент для обработки ресурсоёмких задач в фоне: отправка писем, обработка видео, нотификации и многое другое. В этой статье мы пошагово разберём весь процесс работы с job'ами — от создания нужных таблиц до запуска очередей в продакшене через Supervisor. Вы узнаете, как отслеживать и повторно запускать проваленные задания, автоматически чистить старые, настраивать задержки и количество попыток, а также использовать батчи для групповых операций. Если вы хотите уверенно управлять фоновыми задачами в Laravel — этот гайд станет вашей настольной инструкцией.
👉 Читать статью
Библиотека пхпшника
👍2❤1
💬 Вопрос от подписчика: как сохранить PHP-код чистым и поддерживаемым?
👇 Делитесь своим опытом — что реально помогает вам не утонуть в хаосе?
🚀 Используете ли вы стандарты, линтеры, слои, DDD, maybe Laravel-пакеты или IDE-фишки?
Обсудим в комментариях!
Библиотека пхпшника #междусобойчик
«Чем больше растёт мой PHP-проект, тем сложнее за ним следить. Маленькие фиксы превращаются в грязные заплатки, а кодовая база становится всё менее управляемой.
Как вы поддерживаете чистоту и читаемость кода в долгосрочной перспективе? Есть ли какие-то советы по структуре, неймингу или полезные инструменты для поддерживаемости?»
👇 Делитесь своим опытом — что реально помогает вам не утонуть в хаосе?
🚀 Используете ли вы стандарты, линтеры, слои, DDD, maybe Laravel-пакеты или IDE-фишки?
Обсудим в комментариях!
Библиотека пхпшника #междусобойчик
👍2🤔2❤1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
Прописаны все виды команд JOIN, а также их визуал.
Крайне полезная штука — сохраняем.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🥱4❤1👾1
События vs сообщения. Понимаете ли вы разницу и почему это важно?
🧠 «Будем отправлять события в Rabbit!» — фраза, с которой всё начинается… и всё рушится 😅
Слишком часто в проектах путают события, сообщения и транспорт. В итоге появляются боли, магия и код, в котором невозможно разобраться. А потом слышим:
А дело-то не в Messenger'е, а в архитектурных решениях.
🔥 В статье, на которую обязательно стоит потратить время:
🔸 разбор, что такое событие в приложении (и почему это не сообщение);
🔸 почему Symfony EventDispatcher нельзя тащить в домен;
🔸 как выглядит простой, но правильный
🔸 когда события превращаются в сообщения — и почему транспорт (Rabbit/Kafka/etc) должен подбираться последним, а не первым;
🔸 и почему «всё в одном классе» — верный путь в дебаг ад.
📌 Отдельная тема - как событие из домена превращается в сообщение и уходит в Rabbit через Symfony Messenger.
Да, Messenger — это не центр вселенной, а всего лишь инструмент доставки. И это важно понимать.
👉 Хабр
💬 А ты как реализуешь события в своих проектах? Используешь ли отдельный dispatcher для домена?
🧠 «Будем отправлять события в Rabbit!» — фраза, с которой всё начинается… и всё рушится 😅
Слишком часто в проектах путают события, сообщения и транспорт. В итоге появляются боли, магия и код, в котором невозможно разобраться. А потом слышим:
Symfony Messenger? Фу, я на нём проект писал — не взлетел!
А дело-то не в Messenger'е, а в архитектурных решениях.
🔥 В статье, на которую обязательно стоит потратить время:
🔸 разбор, что такое событие в приложении (и почему это не сообщение);
🔸 почему Symfony EventDispatcher нельзя тащить в домен;
🔸 как выглядит простой, но правильный
DomainEventPublisher
;🔸 когда события превращаются в сообщения — и почему транспорт (Rabbit/Kafka/etc) должен подбираться последним, а не первым;
🔸 и почему «всё в одном классе» — верный путь в дебаг ад.
📌 Отдельная тема - как событие из домена превращается в сообщение и уходит в Rabbit через Symfony Messenger.
Да, Messenger — это не центр вселенной, а всего лишь инструмент доставки. И это важно понимать.
👉 Хабр
💬 А ты как реализуешь события в своих проектах? Используешь ли отдельный dispatcher для домена?
👍3🔥3
🔥 Сегодня стартует курс по AI-агентам!
Онбординг уже сегодня, но ещё можно вписаться — ПОСЛЕДНИЙ ШАНС это сделать.
Мы больше года собирали мультиагентные системы: экспериментировали, переделывали и в итоге — оформили всё в 5 плотных вебинаров.
😤 «А можно ли вообще научиться чему-то за 5 вебинаров?!»
Если вы хотите просто послушать — нет
Если хотите разбираться и делать — да
➡️ На курсе:
— мы не читаем слайдики, а работаем в коде в реальном времени
— можно задавать вопросы прямо на вебинаре
— после каждого вебинара есть домашка и поддержка в чате
И главное — вы получаете системное понимание, а не набор хаотичных туториалов.
⚡️Если вы думаете, что успеете потом — не успеете.
Старт сегодня:
— а те, кто вписался сейчас, будут вас опережать — в проектах, на грейде и в зарплате
Знакомьтесь, эксперт нашего курса:
Никита Зелинский — Chief Data Scientist МТС, Head of ML Platforms, руководитель центра компетенций по Data Science.
❗Стартуем сегодня — забронируй свое место
Онбординг уже сегодня, но ещё можно вписаться — ПОСЛЕДНИЙ ШАНС это сделать.
Мы больше года собирали мультиагентные системы: экспериментировали, переделывали и в итоге — оформили всё в 5 плотных вебинаров.
😤 «А можно ли вообще научиться чему-то за 5 вебинаров?!»
Если вы хотите просто послушать — нет
Если хотите разбираться и делать — да
➡️ На курсе:
— мы не читаем слайдики, а работаем в коде в реальном времени
— можно задавать вопросы прямо на вебинаре
— после каждого вебинара есть домашка и поддержка в чате
И главное — вы получаете системное понимание, а не набор хаотичных туториалов.
⚡️Если вы думаете, что успеете потом — не успеете.
Старт сегодня:
— а те, кто вписался сейчас, будут вас опережать — в проектах, на грейде и в зарплате
Знакомьтесь, эксперт нашего курса:
Никита Зелинский — Chief Data Scientist МТС, Head of ML Platforms, руководитель центра компетенций по Data Science.
❗Стартуем сегодня — забронируй свое место
🐞 Холивар: var_dump vs. xdebug vs. логирование
Каждый разработчик сталкивался с вопросом: как лучше всего дебажить код? Вариантов несколько — но какой подход реально работает?
🔍 var_dump — Когда хочется быстрого ответа
Самый быстрый способ отследить значения переменных. Просто пихаем
Плюсы:
Простой, быстрый и не требует дополнительных настроек.
Отлично работает для небольших участков кода.
Минусы:
Запутает вывод, если переменных много.
Не даёт достаточной информации для глубокого анализа, не всегда удобен для сложных структур.
🧩 xdebug — Когда хочется всего и сразу
Плагин для отладки с множеством функций: стэк-трейсы, брейкпоинты, профилирование, и даже код-coverage.
Плюсы:
Полноценная отладка с возможностью пошагового выполнения.
Логирование запросов и удобный просмотр значений переменных.
Минусы:
Может замедлять выполнение кода (особенно на production).
Требует конфигурации и настройки среды.
📝 Логирование — Когда нужно запомнить всё
Для серьёзных проектов — это must-have. Логи помогут отслеживать ошибки, операции и диагностировать проблемы в проде.
Плюсы:
Логи могут быть структурированы, что удобно для поиска и анализа.
В реальном времени можно отслеживать важные события.
Минусы:
Может быть сложнее настроить по сравнению с
Для полноценного логирования нужно грамотно настроить уровни логирования и фильтрацию.
💬 Какой метод предпочитаете вы?
Пишите в комментариях, как вы дебажите свой код: через
Библиотека пхпшника #междусобойчик
Каждый разработчик сталкивался с вопросом: как лучше всего дебажить код? Вариантов несколько — но какой подход реально работает?
🔍 var_dump — Когда хочется быстрого ответа
Самый быстрый способ отследить значения переменных. Просто пихаем
var_dump()
в код, и вот вам вся информация.Плюсы:
Простой, быстрый и не требует дополнительных настроек.
Отлично работает для небольших участков кода.
Минусы:
Запутает вывод, если переменных много.
Не даёт достаточной информации для глубокого анализа, не всегда удобен для сложных структур.
🧩 xdebug — Когда хочется всего и сразу
Плагин для отладки с множеством функций: стэк-трейсы, брейкпоинты, профилирование, и даже код-coverage.
Плюсы:
Полноценная отладка с возможностью пошагового выполнения.
Логирование запросов и удобный просмотр значений переменных.
Минусы:
Может замедлять выполнение кода (особенно на production).
Требует конфигурации и настройки среды.
📝 Логирование — Когда нужно запомнить всё
Для серьёзных проектов — это must-have. Логи помогут отслеживать ошибки, операции и диагностировать проблемы в проде.
Плюсы:
Логи могут быть структурированы, что удобно для поиска и анализа.
В реальном времени можно отслеживать важные события.
Минусы:
Может быть сложнее настроить по сравнению с
var_dump()
.Для полноценного логирования нужно грамотно настроить уровни логирования и фильтрацию.
💬 Какой метод предпочитаете вы?
Пишите в комментариях, как вы дебажите свой код: через
var_dump()
, полную отладку с xdebug, или используете логирование? Или может, у вас есть свой секретный способ?Библиотека пхпшника #междусобойчик
php-datatypes
Эта библиотека представляет гибкий, но строгий способ работы с примитивными типами данных, такими как целые числа, плавающие и строки, в PHP. Она делает акцент на безопасности типов и точности, поддерживая операции для подписанных и беззнаковых целых чисел (Int8, UInt8 и т.д.) и различных форматов с плавающей точкой (Float32, Float64 и т.д.).
Для чего это нужно:
🟢Безопасность типов: Явно определяя типы данных, например UInt8, вы устраняете риск проникновения недопустимых значений в ваше приложение. Например, использование целых чисел без знака гарантирует, что значение останется в допустимых диапазонах, обеспечивая защиту от неожиданного ввода данных.
🟢Точность: Работа с точными значениями, особенно с числами с плавающей точкой, может быть сложной в PHP из-за того, как он управляет плавающими числами нативно.
🟢Защита диапазонов: Указывая точные диапазоны, вы можете предотвратить такие проблемы, как переполнение или недополнение, которые часто остаются незамеченными в языках с динамической типизацией.
🟢Удобство чтения и обслуживания: Явные типы данных улучшают читаемость кода. Когда разработчик читает ваш код, он сразу же понимает, какой тип значения ожидается и какие ограничения на него накладываются. Это повышает удобство сопровождения в долгосрочной перспективе.
🔗 Github
Эта библиотека представляет гибкий, но строгий способ работы с примитивными типами данных, такими как целые числа, плавающие и строки, в PHP. Она делает акцент на безопасности типов и точности, поддерживая операции для подписанных и беззнаковых целых чисел (Int8, UInt8 и т.д.) и различных форматов с плавающей точкой (Float32, Float64 и т.д.).
Для чего это нужно:
🟢Безопасность типов: Явно определяя типы данных, например UInt8, вы устраняете риск проникновения недопустимых значений в ваше приложение. Например, использование целых чисел без знака гарантирует, что значение останется в допустимых диапазонах, обеспечивая защиту от неожиданного ввода данных.
🟢Точность: Работа с точными значениями, особенно с числами с плавающей точкой, может быть сложной в PHP из-за того, как он управляет плавающими числами нативно.
🟢Защита диапазонов: Указывая точные диапазоны, вы можете предотвратить такие проблемы, как переполнение или недополнение, которые часто остаются незамеченными в языках с динамической типизацией.
🟢Удобство чтения и обслуживания: Явные типы данных улучшают читаемость кода. Когда разработчик читает ваш код, он сразу же понимает, какой тип значения ожидается и какие ограничения на него накладываются. Это повышает удобство сопровождения в долгосрочной перспективе.
🔗 Github
👍3❤1
Forwarded from Библиотека задач по PHP | тесты, код, задания
Какая функция ищет последнее вхождение символа в строку?
Anonymous Quiz
22%
strpos()
11%
strtr()
58%
strrpos()
9%
substr()
⌨️ Топ-вакансий по PHP за неделю
Team Lead PHP — от 3000 до 3100 $ удалёнка (Москва)
Senior PHP Developer — от 250 000 до 400 000 ₽, Гибрид (Москва)
PHP разработчик — от 1500 до 2000 $, Удалёнка (Москва)
PHP разработчик (Symfony) — от 160 000 ₽, Удалёнка
➡️ Еще больше топовых вакансий — в нашем канале PHP Jobs
Team Lead PHP — от 3000 до 3100 $ удалёнка (Москва)
Senior PHP Developer — от 250 000 до 400 000 ₽, Гибрид (Москва)
PHP разработчик — от 1500 до 2000 $, Удалёнка (Москва)
PHP разработчик (Symfony) — от 160 000 ₽, Удалёнка
➡️ Еще больше топовых вакансий — в нашем канале PHP Jobs
Как создать собственный метод хелпера строк Laravel с помощью макроса
Строковый хелпер Laravel предлагает множество полезных методов, которые вы можете использовать в своем приложении. Но мы также можем создать собственный метод с помощью макроса.
👉 Читать статью
Библиотека пхпшника #буст
Строковый хелпер Laravel предлагает множество полезных методов, которые вы можете использовать в своем приложении. Но мы также можем создать собственный метод с помощью макроса.
👉 Читать статью
Библиотека пхпшника #буст
👍1👏1😁1
🖥️ Fluent CLI в PHP: Создаём консольные команды с __call и никаких танцев с бубном
Часто возитесь с
📦 PhpFluentConsole — небольшая, но удобная библиотека для работы с командной строкой в PHP. Не конкурирует с Symfony Console, а дополняет её, упрощая типичные задачи:
🔧 Что умеет:
— Упрощает построение CLI-команд через fluent-интерфейс
— Поддерживает разные кодировки (CP866, CP1251, UTF-8) — особенно актуально в Windows
— Позволяет обрабатывать вывод, искать ошибки и шаблоны через регулярки
— Упрощает получение стандартного вывода и кодов возврата
— Позволяет наследоваться и описывать свои команды как методы
🧪 Примеры из статьи:
— Получение IP-адреса через
— Извлечение контейнеров с ЭЦП через
— Упрощённое построение обёрток для системных утилит с собственной логикой
📚 В статье пошагово разобраны возможности библиотеки, примеры вывода, ошибки, тонкости работы с кодировками и даже идея по созданию собственных CLI-решений на её основе.
🛠️ Отличная основа для утилит, интеграций и инструментов — особенно если нужно взаимодействовать с внешними командами, обрабатывать их вывод и не хочется писать велосипед.
🔜 В следующей статье автор обещает рассказать про CryptoProBuilder — уже ждём 👀
👉 Хабр
Библиотека пхпшника
Часто возитесь с
cmd
, powershell
, csptest
, ipconfig
, кириллицей и странным выводом?📦 PhpFluentConsole — небольшая, но удобная библиотека для работы с командной строкой в PHP. Не конкурирует с Symfony Console, а дополняет её, упрощая типичные задачи:
🔧 Что умеет:
— Упрощает построение CLI-команд через fluent-интерфейс
— Поддерживает разные кодировки (CP866, CP1251, UTF-8) — особенно актуально в Windows
— Позволяет обрабатывать вывод, искать ошибки и шаблоны через регулярки
— Упрощает получение стандартного вывода и кодов возврата
— Позволяет наследоваться и описывать свои команды как методы
🧪 Примеры из статьи:
— Получение IP-адреса через
ipconfig
с корректной кириллицей— Извлечение контейнеров с ЭЦП через
csptest
— Упрощённое построение обёрток для системных утилит с собственной логикой
📚 В статье пошагово разобраны возможности библиотеки, примеры вывода, ошибки, тонкости работы с кодировками и даже идея по созданию собственных CLI-решений на её основе.
🛠️ Отличная основа для утилит, интеграций и инструментов — особенно если нужно взаимодействовать с внешними командами, обрабатывать их вывод и не хочется писать велосипед.
🔜 В следующей статье автор обещает рассказать про CryptoProBuilder — уже ждём 👀
👉 Хабр
Библиотека пхпшника
How to: собрать RAG-систему на Neuron AI + Ollama в PHP
В свежем руководстве демонстрируется, как с помощью PHP, Neuron AI и локальной модели Ollama (например, llama3.2 и nomic-embed-text) создать RAG‑агента — мощную систему, объединяющую поиск по документации и генерацию ответов.
✨ Что такое RAG?
Retrieval‑Augmented Generation (RAG) — это подход, когда LLM не опирается только на свои «внутренние» знания, а сначала извлекает релевантную информацию из внешних источников (например, Markdown-файлы), затем генерирует ответ, учитывая этот контекст.
🙌 Почему это круто?
• 📖 Точность: ответы основаны на самых актуальных документах.
• 🔁 Гибкость: добавляйте или обновляйте контент без переобучения.
• 🛡️ Надёжность: система ссылается на реальные данные, снижается риск «галлюцинаций» .
🧩 Пошагово (очень кратко):
🔸 Настраиваем Neuron AI и Ollama (локально).
🔸 Создаём PHP-класс, расширяющий
🔸 Загружаем папку с Markdown-файлами — нейронная система индексирует их в векторном хранилище.
🔸 При запросе выполняется семантический поиск → полученные фрагменты вставляются в запрос → LLM генерирует ответ.
Используем Neuron AI + Ollama
Затем написание PHP-класса (например,
🧩 После этого вы загружаете Markdown-файлы, они индексируются, и при запросе бот ищет релевантные куски и отвечает, опираясь на них.
🕒 Важно: индексировать документы нужно только при обновлении — это ускоряет работу.
✅ Коротко о плюсах:
🔹 Полная автономность (работает локально)
🔹 Актуальность и безопасность данных
🔹 Быстрое обновление контента — без дорогостоящего обучения моделей
🔗 Читать статью
Библиотека пхпшника #буст
В свежем руководстве демонстрируется, как с помощью PHP, Neuron AI и локальной модели Ollama (например, llama3.2 и nomic-embed-text) создать RAG‑агента — мощную систему, объединяющую поиск по документации и генерацию ответов.
✨ Что такое RAG?
Retrieval‑Augmented Generation (RAG) — это подход, когда LLM не опирается только на свои «внутренние» знания, а сначала извлекает релевантную информацию из внешних источников (например, Markdown-файлы), затем генерирует ответ, учитывая этот контекст.
🙌 Почему это круто?
• 📖 Точность: ответы основаны на самых актуальных документах.
• 🔁 Гибкость: добавляйте или обновляйте контент без переобучения.
• 🛡️ Надёжность: система ссылается на реальные данные, снижается риск «галлюцинаций» .
🧩 Пошагово (очень кратко):
🔸 Настраиваем Neuron AI и Ollama (локально).
🔸 Создаём PHP-класс, расширяющий
RAG
от Neuron: указываем модели для эмбеддингов и генерации.🔸 Загружаем папку с Markdown-файлами — нейронная система индексирует их в векторном хранилище.
🔸 При запросе выполняется семантический поиск → полученные фрагменты вставляются в запрос → LLM генерирует ответ.
Используем Neuron AI + Ollama
composer require inspector-apm/neuron-ai
Затем написание PHP-класса (например,
Bot
), где:provider()
указывает модель генерации (Ollama + llama3.2)embeddings()
— модель для эмбеддингов (nomic-embed-text)vectorStore()
— векторное хранилище (локальный файл)🧩 После этого вы загружаете Markdown-файлы, они индексируются, и при запросе бот ищет релевантные куски и отвечает, опираясь на них.
🕒 Важно: индексировать документы нужно только при обновлении — это ускоряет работу.
✅ Коротко о плюсах:
🔹 Полная автономность (работает локально)
🔹 Актуальность и безопасность данных
🔹 Быстрое обновление контента — без дорогостоящего обучения моделей
🔗 Читать статью
Библиотека пхпшника #буст
🤔5👍1
🧱 От SQL-монолита к распределённой NoSQL-системе
Когда данные растут быстрее, чем ваша реляционная СУБД справляется с нагрузкой, каждая задержка — это упущенные пользователи и деньги.
💡 Представьте, что вы безболезненно переводите монолитную SQL-схему на масштабируемую NoSQL-архитектуру — и всё это с минимальным простоем и без потери данных.
🎯 Для этого мы подготовили промпт, который можно адаптировать под любой проект:
📌 Скопируйте шаблон, вставьте свою SQL-схему и начните проект по миграции уже сегодня.
💬 А у вас был опыт миграции с SQL на NoSQL или наоборот? Поделитесь болями и находками 👇
Библиотека пхпшника #буст
Когда данные растут быстрее, чем ваша реляционная СУБД справляется с нагрузкой, каждая задержка — это упущенные пользователи и деньги.
💡 Представьте, что вы безболезненно переводите монолитную SQL-схему на масштабируемую NoSQL-архитектуру — и всё это с минимальным простоем и без потери данных.
🎯 Для этого мы подготовили промпт, который можно адаптировать под любой проект:
You are a highly experienced PHP developer specializing in database migrations, particularly from SQL to NoSQL databases. You possess a deep understanding of database architecture, data modeling, and performance optimization. Your goal is to analyze a given SQL database schema and propose a robust and efficient migration strategy to a NoSQL database, considering data integrity, scalability, and maintainability.
Here is the format you will use to reason through the migration and come up with a fantastic recommendation:
##SQL Database Schema
$sql_schema_description (Provide a detailed description of the SQL schema, including tables, columns, data types, relationships, and indexes.)
##NoSQL Database Choice and Justification
$nosql_database (Specify the chosen NoSQL database type (e.g., MongoDB, Couchbase, DynamoDB) and provide a detailed justification for its selection based on the SQL schema and anticipated application needs. Consider factors like data model flexibility, scalability requirements, query patterns, and operational overhead.)
##Data Modeling Strategy for NoSQL
$data_modeling_strategy (Describe how the SQL data will be transformed and modeled within the chosen NoSQL database. Include specific examples of how tables and relationships will be represented in the NoSQL data model. Address potential denormalization strategies and trade-offs.)
##Migration Steps and Considerations
$migration_steps (Outline a step-by-step migration plan, including data extraction, transformation, and loading (ETL) processes. Address data validation and integrity checks during and after the migration. Consider potential downtime and rollback strategies.)
##Code Snippets (PHP)
$php_code_snippets (Provide example PHP code snippets demonstrating how to interact with the NoSQL database, including data insertion, querying, and updating. Use a popular PHP NoSQL driver.)
##Performance Optimization Strategies
$performance_optimization (Describe strategies for optimizing performance in the NoSQL database, such as indexing, query optimization, and data partitioning. Consider the specific characteristics of the chosen NoSQL database.)
##Potential Challenges and Mitigation Strategies
$challenges_and_mitigation (Identify potential challenges during the migration process, such as data inconsistencies, schema evolution, and performance bottlenecks. Propose mitigation strategies for each challenge.)
Here is the challenge you are tasked with: [ВСТАВЬТЕ СВОЮ СХЕМУ БД]
📌 Скопируйте шаблон, вставьте свою SQL-схему и начните проект по миграции уже сегодня.
💬 А у вас был опыт миграции с SQL на NoSQL или наоборот? Поделитесь болями и находками 👇
Библиотека пхпшника #буст
😁5😢1
🧩 Ваш базовый стек для старта PHP-проекта
Когда стартуешь новый проект, нет времени выбирать идеальные инструменты — хочется просто взять знакомое и начать пилить фичи. У каждого разработчика со временем формируется свой «боевой» набор.
У меня сейчас примерно так:
Не идеальный набор, но позволяет быстро развернуть окружение и приступить к делу. Всё остальное — по мере надобности.
❓ А у вас как? Что летит в бой первым?
👇 Делитесь своими «must-have» в комментариях!
Библиотека пхпшника #междусобойчик
Когда стартуешь новый проект, нет времени выбирать идеальные инструменты — хочется просто взять знакомое и начать пилить фичи. У каждого разработчика со временем формируется свой «боевой» набор.
У меня сейчас примерно так:
– Laravel– Laravel Breeze (или Sanctum, если нужен API)– Filament для админки– Spatie-пакеты: roles, media, permissions– Docker с Sail или кастомной сборкой– Tailwind, если есть фронт
Не идеальный набор, но позволяет быстро развернуть окружение и приступить к делу. Всё остальное — по мере надобности.
❓ А у вас как? Что летит в бой первым?
👇 Делитесь своими «must-have» в комментариях!
Библиотека пхпшника #междусобойчик
Если у вас в коде 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.
❤4👍1