Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
11.3K subscribers
1.33K photos
21 videos
26 files
4.03K links
Все самое полезное для пхпшника в одном канале.

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

Учиться у нас: https://proglib.io/w/bca892d6

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

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Download Telegram
🧱 От 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-проекта

Когда стартуешь новый проект, нет времени выбирать идеальные инструменты — хочется просто взять знакомое и начать пилить фичи. У каждого разработчика со временем формируется свой «боевой» набор.

У меня сейчас примерно так:

– Laravel– Laravel Breeze (или Sanctum, если нужен API)– Filament для админки– Spatie-пакеты: roles, media, permissions– Docker с Sail или кастомной сборкой– Tailwind, если есть фронт


Не идеальный набор, но позволяет быстро развернуть окружение и приступить к делу. Всё остальное — по мере надобности.

А у вас как? Что летит в бой первым?

👇 Делитесь своими «must-have» в комментариях!

Библиотека пхпшника #междусобойчик
1
🛠 PhpStorm‑лайфхак: режим «Редактирование HTML внутри PHP-строк»

Если у вас в коде PHP-строка с HTML, просто поставьте курсор внутри неё и нажмите Alt+Enter → выберите Edit HTML content. PhpStorm откроет встроенный HTML‑редактор — с подсветкой, автокомплитом и линтингом внутри IDE.

📌 Всем, кто работает с шаблонами или Email‑шаблонами внутри PHP — это реальная экономия времени!

Попробуйте прямо сейчас — и убедитесь сами 😊

Библиотека пхпшника #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍91
Библиотеки для работы с 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.
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() — сообщество делится малоизвестными, но полезными приёмами эффективного использования методов find() и first() в Eloquent.

Библиотека пхпшника #свежак
3
☝️ Последний шанс купить курсы Proglib Academy с доступом навсегда!

Это не просто летняя распродажа, это финал эпохи. Мы дарим скидку 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
🎮 Балансировка нагрузки для UDP-сервисов

Проблема: необходимо распределить трафик между несколькими 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: от основ до фреймворков

Если в коде появляются 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

Библиотека пхпшника #инструменты
🤔3🔥2👍1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🚀 Давно хотите вкатиться в pet-проект, но все никак не решитесь?

Залетайте на 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
🧹 Команда дня: Удаление папки vendor и пересборка зависимостей

📌 Зачем это нужно?

Иногда при работе с Composer могут возникать проблемы, такие как:

🔸 Ошибки при установке или обновлении зависимостей.
🔸 Конфликты версий пакетов.
🔸 Необходимость сбросить текущее состояние зависимостей и начать с чистого листа.

В таких случаях полезно полностью удалить папку vendor и файл composer.lock, а затем заново установить все зависимости.

🛠️ Шаги для пересборки зависимостей:

Удалите папку vendor и файл composer.lock:

rm -rf vendor composer.lock

Очистите кеш Composer (необязательно, но рекомендуется):

composer clear-cache

Установите зависимости заново:

composer install

Эти шаги помогут вам начать с чистого состояния и устранить возможные проблемы с зависимостями.

⚠️ Важные замечания:

Не коммитьте папку vendor в систему контроля версий: Рекомендуется добавлять её в .gitignore, чтобы избежать излишнего увеличения размера репозитория. getcomposer.org

Проблемы с правами доступа: Если после удаления и повторной установки зависимостей возникают ошибки, связанные с правами доступа, убедитесь, что у вас есть необходимые разрешения на запись в директорию проекта.

Когда использовать эту процедуру?
При возникновении ошибок при установке или обновлении зависимостей.

Если вы хотите сбросить текущее состояние зависимостей и начать с чистого листа.

При переключении между ветками в системе контроля версий, чтобы избежать конфликтов зависимостей.

Библиотека пхпшника #буст
👍3😁21🤩1