Библиотека пхпшника | 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
🖥️ Fluent CLI в PHP: Создаём консольные команды с __call и никаких танцев с бубном

Часто возитесь с 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-класс, расширяющий 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👍2
🧱 От 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