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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Download Telegram
📚Building Microservices: Designing Fine-Grained Systems, 2nd Edition (2021)

Это книга о том, как распилить монолит на такие мелкие кусочки, что потом их сложно не только собрать, но и найти 🙃

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

Что внутри:

🔧 Как заставить сервисы разговаривать друг с другом, не вызывая слёз у девопсов

🔍 Как тестировать микросервисы, не нарушая каноны

🚢 Как деплоить всё это счастье независимо и желательно без жертв

🛡️ И, конечно, как не дать хакеру превратить ваш gRPC в трагедию

🔗 Скачать

🐸 Книги для программистов
Please open Telegram to view this post
VIEW IN TELEGRAM
«Как мы снизили время отклика в 15 раз на новом портале ВДНХ через Laravel + Nuxt и масштабируемую архитектуру»

В конце мая 2025 года ВДНХ представил обновлённый сайт, объединивший все проекты выставки на одной платформе. 🎨 Новый дизайн, интерактивная 3D-карта и возможность купить билеты — всё это стало возможным благодаря масштабной модернизации, которая включала в себя новые технологии и архитектурные решения.

💡 Основные моменты:

🔹 Старый сайт: 14 отдельных сайтов с различными дизайнами и техническими решениями, что создавало путаницу для пользователей и трудности для контент-менеджеров.

🔹 Новая архитектура: Система, построенная на Laravel (бэкенд) и Nuxt.js (фронтенд), решала задачи масштабируемости и высокой производительности. Преимущества — гибридный рендеринг, быстрый отклик страниц и улучшенная SEO-оптимизация.

🔹 Производительность: Время отклика сократилось почти в 15 раз — с 900 мс до 62 мс, что значительно улучшило пользовательский опыт, особенно во время пиковых нагрузок. 🌐

🔹 Микросервисы и кэширование: Модульная архитектура с поддержкой Redis, Memcached и Nginx обеспечила высокую нагрузочную способность и быстрый доступ к данным.

🔹 Интерфейс и поддержка контента: Удобная админ-панель на Laravel Orchid позволяет легко обновлять контент и настраивать страницы. Многоязычная поддержка и адаптивное меню делают сайт доступным для широкой аудитории.

⚙️ Под капотом:

Гибридный рендеринг (SSR + клиентская подгрузка)

Многоуровневое кэширование для динамических и статичных данных

Прогрессивные веб-приложения с функцией офлайн-режима

📊 Результаты: по тестам, время загрузки страницы улучшилось на 40%, а сайт теперь способен выдерживать многократный рост трафика без потери качества.

🔗 Хабр

Библиотека пхпшника
🥱3
🚀 How to: Использовать pluck() с замыканиями в Laravel для упрощения кода

Если вы когда-либо использовали pluck() в Laravel и нуждались в преобразовании значений или ключей, то знаете, как громоздким может быть использование mapWithKeys(). Теперь, с поддержкой замыканий в pluck(), можно сделать код чище и проще.

Пример:

$countries = Country::get()
->pluck(fn (Country $country) => «{$country->flag} {$country->name}», 'id');

Этот код заменяет громоздкое использование mapWithKeys() для простых преобразований.

Реальные примеры:

Пользователи: Формируем полные имена для выпадающего списка.
Продукты: Добавляем валюту к ценам.
Категории: Создаём слаги для категорий.

Теперь можно использовать простые преобразования в pluck() без лишнего кода. Отлично подходит для Blade-шаблонов!

👉 Medium
👍31
🤓 Git Gud — игра для изучения Git

Это игра с командной строкой. В ней уровни разделены от простого к экспертному.

🔗 Ссылка
Переворачиваем календарь — а там скидки, которые уже закончились.

Но мы их вернули на последний день 🤔

До 00:00 третьего сентября (цены как до 1 сентября):

▪️ Математика для Data Science — 35.199 ₽ вместо 44.900 ₽
▪️ Алгоритмы и структуры данных — 31.669 ₽ вместо 39.900 ₽
▪️ Основы IT — 14.994 ₽ вместо 19.900 ₽
▪️ Архитектуры и шаблоны — 24.890 ₽ вместо 32.900 ₽
▪️ Python — 24.990 ₽ вместо 32.900 ₽
▪️ ML для Data Science — 34.000 ₽ вместо 44. 000 ₽
▪️ AI-агенты — 49.000 ₽ вместо 59.000 ₽

👉 Хватаем скидки из прошлого

P.S. Машину времени одолжили у дяди Миши
📂 Шпаргалка по вводу-выводу в PHP

Чтобы не гуглить каждый раз: как читать из STDIN, быстро проглатывать целый файл, дописывать в конец и копировать потоки — собрали базовые, но практичные примеры.

Чтение одной строки из STDIN:
<?php
$line = trim(fgets(STDIN)); // читает строку до перевода строки
echo "Введено: $line\n";

Основано на CLI-константе STDIN.

Чтение всего STDIN:
<?php
$all = stream_get_contents(STDIN); // либо file_get_contents('php://stdin')
echo $all;

php://stdin — стандартный поток ввода процесса PHP.


Чтение файла целиком:
<?php
$data = file_get_contents('file.txt');
if ($data === false) {
fwrite(STDERR, "Не удалось прочитать файл\n");
exit(1);
}
echo $data;


file_get_contents()
— предпочтительный способ прочитать файл в строку.

Построчное чтение файла:
<?php
$fh = fopen('file.txt', 'r');
if (!$fh) { die("Не удалось открыть файл\n"); }

while (($line = fgets($fh)) !== false) {
echo $line; // обработка строки
}
fclose($fh);


Используем классический цикл с fgets().


Запись в файл (перезапись):
<?php
$bytes = file_put_contents('out.txt', "Привет, PHP!\n", LOCK_EX);
if ($bytes === false) {
die("Ошибка записи\n");
}


file_put_contents() перезапишет файл (или создаст, если нет). Можно добавить LOCK_EX для блокировки.

Запись в файл (добавление в конец):
<?php
$ok = file_put_contents('out.txt', "Новая строка\n", FILE_APPEND | LOCK_EX);
if ($ok === false) { die("Ошибка записи\n"); }


Флаг FILE_APPEND дописывает, а не перезаписывает.
Reintech

Копирование файлов (быстро и потоково):
<?php
$src = fopen('src.txt', 'r');
$dst = fopen('dst.txt', 'w');
if (!$src || !$dst) { die("Ошибка открытия файлов\n"); }

$copied = stream_copy_to_stream($src, $dst); // копирует весь остаток
fclose($src);
fclose($dst);

echo "Скопировано байт: $copied\n";


stream_copy_to_stream() копирует данные из одного потока в другой (удобно и для сетевых/памятных потоков).


Работа с буфером (in-memory I/O):
<?php
$buf = fopen('php://temp', 'r+'); // авто-переключение в файл при больших объёмах
fwrite($buf, "Hello, ");
fwrite($buf, "World!");
rewind($buf);
echo stream_get_contents($buf); // -> Hello, World!
fclose($buf);


php://temp/php://memory — удобные «псевдо-файлы» для буферизации в памяти.

Библиотека пхпшника

#буст
5🥱1
Как часто в реальных проектах используется обработка исключений?

Наш подписчик спрашивает:

Я только начинаю работать с обработкой исключений. В учебниках часто приводят примеры с try-catch, но в реальных проектах я не встречал их так часто. Насколько часто в реальных проектах используется обработка исключений? И в каких случаях она действительно необходима?


🔹 Как вы используете обработку исключений в своих проектах?

— В каких ситуациях вы предпочитаете использовать try-catch?
— Какие ошибки чаще всего приходится обрабатывать?
— Какие подходы к обработке исключений сработали для вас лучше всего?

💬 Делитесь в комментариях вашим мнением и опытом.

P.S. Если хотите задать вопрос, заполните нашу гугл-форму. Это займет 5 минут.

🐸Библиотека пхпшника

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
😎 Сколько баллов набрали вы?

Голосуйте, какой у вас уровень разработчика:

😁 — 5-12 баллов (стажер)
👍 — 13-25 баллов (джуниор)
⚡️ — 26-40 баллов (джуниор+)
👏 — 41-60 баллов (миддл)
🔥 — 61-80 баллов (миддл+)
🎉 — 81-100 баллов (сеньор)
🤩 — 100+ баллов (тимлид)

Но вот в чем прикол — опытный разработчик набирает баллы не случайными косяками, а осознанными решениями.

👉 Научим, как быстро прокачаться от стажера до сеньора
🤩2😁1