📂 Шпаргалка по вводу-выводу в PHP
Чтобы не гуглить каждый раз: как читать из STDIN, быстро проглатывать целый файл, дописывать в конец и копировать потоки — собрали базовые, но практичные примеры.
Чтение одной строки из STDIN:
Основано на CLI-константе STDIN.
Чтение всего STDIN:
Чтение файла целиком:
Построчное чтение файла:
Используем классический цикл с
Запись в файл (перезапись):
Запись в файл (добавление в конец):
Флаг
Reintech
Копирование файлов (быстро и потоково):
Работа с буфером (in-memory I/O):
Библиотека пхпшника
#буст
Чтобы не гуглить каждый раз: как читать из 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
— удобные «псевдо-файлы» для буферизации в памяти.Библиотека пхпшника
#буст
❤7🥱1
Наш подписчик спрашивает:
Я только начинаю работать с обработкой исключений. В учебниках часто приводят примеры с try-catch, но в реальных проектах я не встречал их так часто. Насколько часто в реальных проектах используется обработка исключений? И в каких случаях она действительно необходима?
🔹 Как вы используете обработку исключений в своих проектах?
— В каких ситуациях вы предпочитаете использовать try-catch?
— Какие ошибки чаще всего приходится обрабатывать?
— Какие подходы к обработке исключений сработали для вас лучше всего?
P.S. Если хотите задать вопрос, заполните нашу гугл-форму. Это займет 5 минут.
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
😎 Сколько баллов набрали вы?
Голосуйте, какой у вас уровень разработчика:
😁 — 5-12 баллов (стажер)
👍 — 13-25 баллов (джуниор)
⚡️ — 26-40 баллов (джуниор+)
👏 — 41-60 баллов (миддл)
🔥 — 61-80 баллов (миддл+)
🎉 — 81-100 баллов (сеньор)
🤩 — 100+ баллов (тимлид)
Но вот в чем прикол — опытный разработчик набирает баллы не случайными косяками, а осознанными решениями.
👉 Научим, как быстро прокачаться от стажера до сеньора
Голосуйте, какой у вас уровень разработчика:
😁 — 5-12 баллов (стажер)
👍 — 13-25 баллов (джуниор)
⚡️ — 26-40 баллов (джуниор+)
👏 — 41-60 баллов (миддл)
🔥 — 61-80 баллов (миддл+)
🎉 — 81-100 баллов (сеньор)
🤩 — 100+ баллов (тимлид)
Но вот в чем прикол — опытный разработчик набирает баллы не случайными косяками, а осознанными решениями.
👉 Научим, как быстро прокачаться от стажера до сеньора
🤩4🥱2😁1
Плагин EM‑Assist анализирует длинные методы, предлагает, какие части кода стоит вынести в отдельную функцию — сгенерирует название, покажет фрагмент и применит рефакторинг в IDE.
• Recall 53.4 % vs 39.4 % у классических инструментов
• 94 % разработчиков довольны результатом
• Работает через пайплайн: LLM → фильтрация статическим анализом → топ‑3 варианта → рефакторинг одним кликом
Установка & использование:
1. Plugins → Marketplace → ищите "EM‑Assist" → Install → Restart IDE
2. (Опционально) Tools → Large Language Models → вставьте OpenAI API Key
3. Правый клик в методе → Show Context Actions → Extract Function experiment → выберите вариант → Apply
Отличный способ быстро очистить большие методы и улучшить структуру кода с минимальными усилиями!
Библиотека пхпшника
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5🥱3
🚀 Как построить workflow в PHP без боли
В каждом бизнес-приложении есть процессы: обработка заказов, онбординг клиентов, согласование документов. Но чаще всего именно workflow превращается в ад для разработчиков: куча сервисов, сложные тесты и боязнь что-то сломать.
Что обычно делают? Пишут огромный
🧩 Почему state machine не спасает
Кажется логичным уйти в state machine: всё по шагам, есть переходы. Но на деле — YAML-конфиги на десятки состояний, логика прячется в хендлерах, а изменения становятся кошмаром. State machine управляет состоянием, а бизнесу нужна прозрачная поведенческая логика.
🌱 Ecotone Orchestrator
Ребята из Ecotone предлагают другой путь — Orchestrator на базе Routing Slip pattern.
Теперь бизнес-процесс — это просто список шагов в коде.(на фото)
📌 Что это даёт:
🔸Понятные шаги вместо монолитных методов
🔸Масштабируемость без синхронизации и БД-состояний
🔸Асинхронные шаги там, где это нужно
🔸Прозрачная обработка ошибок и ретраи
🔸Изменения в workflow без миграций и даунтайма
💡 В итоге: меньше хаоса, больше контроля и возможность адаптировать процессы под клиента или продукт.
👉 Medium
Библиотека пхпшника
В каждом бизнес-приложении есть процессы: обработка заказов, онбординг клиентов, согласование документов. Но чаще всего именно workflow превращается в ад для разработчиков: куча сервисов, сложные тесты и боязнь что-то сломать.
Что обычно делают? Пишут огромный
OrderProcessingService
, где валидатор, оплата, склад и уведомления перемешаны в одном методе. В dev это ещё как-то живёт, но в проде любая ошибка превращается в пожар 🔥🧩 Почему state machine не спасает
Кажется логичным уйти в state machine: всё по шагам, есть переходы. Но на деле — YAML-конфиги на десятки состояний, логика прячется в хендлерах, а изменения становятся кошмаром. State machine управляет состоянием, а бизнесу нужна прозрачная поведенческая логика.
🌱 Ecotone Orchestrator
Ребята из Ecotone предлагают другой путь — Orchestrator на базе Routing Slip pattern.
Теперь бизнес-процесс — это просто список шагов в коде.(на фото)
📌 Что это даёт:
🔸Понятные шаги вместо монолитных методов
🔸Масштабируемость без синхронизации и БД-состояний
🔸Асинхронные шаги там, где это нужно
🔸Прозрачная обработка ошибок и ретраи
🔸Изменения в workflow без миграций и даунтайма
💡 В итоге: меньше хаоса, больше контроля и возможность адаптировать процессы под клиента или продукт.
👉 Medium
Библиотека пхпшника
❤7🥱2
🎮 КВЕСТОВАЯ ЛИНИЯ: «Путь Data Scientist'а»
⮕ Твой стартовый набор искателя данных:
⚡️ АКТИВЕН ВРЕМЕННЫЙ БАФФ: «Щедрость наставника»
Эффект: –30% к цене полного набора ДСника
Было: 121.800 ₽ → Стало: 84.900 ₽
☞ Что ждет тебя в этом квесте
📎 Забрать бафф
Рассрочки: 3 мес | 6 мес | 12 мес
⮕ Твой стартовый набор искателя данных:
Python — твое легендарное оружие (урон по багам +∞)
Математика — твой базовый интеллект (влияет на понимание алгоритмов)
Машинное обучение — твое дерево навыков (открывает новые способности)
⚡️ АКТИВЕН ВРЕМЕННЫЙ БАФФ: «Щедрость наставника»
Эффект: –30% к цене полного набора ДСника
Было: 121.800 ₽ → Стало: 84.900 ₽
☞ Что ждет тебя в этом квесте
— Получение артефактов: портфолио проектов и сертификаты— Прокачка от новичка до Senior Data Scientist— Босс-файты с реальными задачами из индустрии— Доступ к гильдии единомышленников
📎 Забрать бафф
Рассрочки: 3 мес | 6 мес | 12 мес
Что вас больше всего раздражает в работе?
Anonymous Poll
31%
глупые вопросы от коллег и клиентов
40%
созвоны
42%
работа с документами и отчётами
12%
презентации
15%
планирование
16%
написание рабочих писем
10%
собственно сами рабочие задачи
6%
свой вариант (напишу в комментариях)
⚡️ Будь как этот гений с картинки — предлагай свои условия работодателю, а не наоборот!
Кто нужен?
Но если вы пока джун — я бы предложил:
- Full-time контракт: 180к/мес после курса + опцион на карьеру в топ-компаниях
- Либо фикс за проект: стань ML-инженером за 39к вместо 44к с промокодом LASTCALL
🔗 Старт 9 сентября
Кто нужен?
Senior ML-Engineer с опытом работы более 6 месяцев в FAANG компаниях. Требование: разработать кросс-платформенное приложение-трекер зарплат с AI-распознаванием вакансий по резюме.
Но если вы пока джун — я бы предложил:
- Full-time контракт: 180к/мес после курса + опцион на карьеру в топ-компаниях
- Либо фикс за проект: стань ML-инженером за 39к вместо 44к с промокодом LASTCALL
🔗 Старт 9 сентября
❤3
💻 Подборка новостей по PHP за неделю:
🔹 CakePHP 5.2.7 — поддержка UUID V7, исправления в
🔹 Laravel 12.26 — добавлены
🔹 PHP 8.5.0 Beta 2 — вторая бета PHP 8.5. Цикл релизов продолжается.
🔹 PHP 8.3.25 и 8.4.12 — багфикс-релизы, обновление рекомендуется всем пользователям.
🔹 Symfony 7.3.3 — очередной стабильный релиз с исправлениями.
🔹 Symfony 25–31 августа 2025 — сообщество вспоминает Райана Уивера (SymfonyCasts), чьи уроки вдохновили тысячи разработчиков. Его вклад в Symfony и теплоту общения будут помнить и продолжать через обучение и поддержку семьи.
Библиотека пхпшника
#свежак
🔹 CakePHP 5.2.7 — поддержка UUID V7, исправления в
getEnv()
и валидации вложенных сущностей.🔹 Laravel 12.26 — добавлены
withHeartbeat()
для Lazy collections, toPrettyJson()
для коллекций и моделей, а также Wayfinder в React/Vue стартер-китах для типобезопасных маршрутов.🔹 PHP 8.5.0 Beta 2 — вторая бета PHP 8.5. Цикл релизов продолжается.
🔹 PHP 8.3.25 и 8.4.12 — багфикс-релизы, обновление рекомендуется всем пользователям.
🔹 Symfony 7.3.3 — очередной стабильный релиз с исправлениями.
🔹 Symfony 25–31 августа 2025 — сообщество вспоминает Райана Уивера (SymfonyCasts), чьи уроки вдохновили тысячи разработчиков. Его вклад в Symfony и теплоту общения будут помнить и продолжать через обучение и поддержку семьи.
Библиотека пхпшника
#свежак
❤1🔥1
Forwarded from Библиотека задач по PHP | тесты, код, задания
⌨️ Топ-вакансий по PHP за неделю
Backend (PHP Laravel) Developer — от 1 500 до 2 000 $, Удалёнка (Москва)
Senior PHP developer— 300 000 ₽, Удалёнка (Москва)
Программист PHP/Laravel/Vue.js — до 200 000 ₽, Удалёнка (Москва)
Senior/Lead PHP Developer — от 2500 до 4000 $, Удалёнка (Москва)
➡️ Еще больше топовых вакансий — в нашем канале PHP Jobs
Backend (PHP Laravel) Developer — от 1 500 до 2 000 $, Удалёнка (Москва)
Senior PHP developer— 300 000 ₽, Удалёнка (Москва)
Программист PHP/Laravel/Vue.js — до 200 000 ₽, Удалёнка (Москва)
Senior/Lead PHP Developer — от 2500 до 4000 $, Удалёнка (Москва)
➡️ Еще больше топовых вакансий — в нашем канале PHP Jobs
Иногда реально ощущение, что нас держат в Матрице.
Большинство сидит, читает статьи про ML, смотрит ролики «как это работает» — и всё.
❗ Сегодня последний день промокода Lastcall (−5000 ₽).
Уже завтра стартует первый вебинар по Машинному обучению — полный набор для выхода из Матрицы.
Кто готов вырваться из симуляции и ворваться в сезон найма?
👾 — я уже в команде Нео
👍 — хочу красную таблетку
🤔 — пока думаю, но интересно
Забирай полный комплект для ML-разработки: Python + Математика + Машинное обучение.
🔥 Скидка 30% действует только до 9 сентября → забираем себе
Большинство сидит, читает статьи про ML, смотрит ролики «как это работает» — и всё.
❗ Сегодня последний день промокода Lastcall (−5000 ₽).
Уже завтра стартует первый вебинар по Машинному обучению — полный набор для выхода из Матрицы.
Кто готов вырваться из симуляции и ворваться в сезон найма?
👾 — я уже в команде Нео
👍 — хочу красную таблетку
🤔 — пока думаю, но интересно
Забирай полный комплект для ML-разработки: Python + Математика + Машинное обучение.
🔥 Скидка 30% действует только до 9 сентября → забираем себе
🌚1
How to: Использование SQLite в продакшене с Laravel
SQLite — это отличная база данных для многих Laravel-приложений, особенно если ваша система не требует огромных масштабов. Она позволяет эффективно работать даже с большим количеством одновременных запросов, при этом не требуя сложной настройки сервера, как в случае с MySQL. Главным преимуществом SQLite является его простота: это один файл базы данных, который можно легко копировать, делая резервное копирование и миграцию простыми. В отличие от MySQL, который требует работы с демоном сервера и дополнительной настройки, SQLite использует ту же среду, в которой работает ваше приложение, минимизируя накладные расходы на межпроцессное взаимодействие.
Преимущества использования SQLite:
Легкость в настройке: Для работы SQLite достаточно лишь одного файла, что упрощает резервное копирование и перенос данных.
Минимизация накладных расходов: SQLite работает непосредственно в том же процессе, что и ваше приложение, исключая лишние расходы на сеть и межпроцессное взаимодействие.
Простота использования: Для большинства небольших и внутренних приложений SQLite может быть быстрее и проще, чем более сложные решения, такие как MySQL.
Этот подход подходит для приложений, которые не требуют огромной масштабируемости и могут работать на одном сервере.
В статье рассмотрены основные практические советы для использования SQLite с Laravel, включая улучшение производительности с помощью режима WAL и особенности работы с транзакциями.
👉 Читать статью
Библиотека пхпшника
SQLite — это отличная база данных для многих Laravel-приложений, особенно если ваша система не требует огромных масштабов. Она позволяет эффективно работать даже с большим количеством одновременных запросов, при этом не требуя сложной настройки сервера, как в случае с MySQL. Главным преимуществом SQLite является его простота: это один файл базы данных, который можно легко копировать, делая резервное копирование и миграцию простыми. В отличие от MySQL, который требует работы с демоном сервера и дополнительной настройки, SQLite использует ту же среду, в которой работает ваше приложение, минимизируя накладные расходы на межпроцессное взаимодействие.
Преимущества использования SQLite:
Легкость в настройке: Для работы SQLite достаточно лишь одного файла, что упрощает резервное копирование и перенос данных.
Минимизация накладных расходов: SQLite работает непосредственно в том же процессе, что и ваше приложение, исключая лишние расходы на сеть и межпроцессное взаимодействие.
Простота использования: Для большинства небольших и внутренних приложений SQLite может быть быстрее и проще, чем более сложные решения, такие как MySQL.
Этот подход подходит для приложений, которые не требуют огромной масштабируемости и могут работать на одном сервере.
В статье рассмотрены основные практические советы для использования SQLite с Laravel, включая улучшение производительности с помощью режима WAL и особенности работы с транзакциями.
👉 Читать статью
Библиотека пхпшника
Единый код валидаторов на фронте и бэке (PHP + FFI + Go + JS)
Когда фронт и бэк на разных языках (например, JS + PHP), часто приходится писать одинаковые валидаторы дважды. Это не только лишняя работа, но и риск ошибок, когда логика валидации на фронте и бэке не совпадает.
🎯 Решение: Используем FFI (Foreign Function Interface) для запуска JavaScript-кода на PHP с помощью Go. Это позволяет использовать один и тот же валидатор и на фронте, и на бэке, обеспечивая синхронизацию логики.
✅ Преимущества: Один код для валидации на двух уровнях, меньше ошибок и проще поддержка.
🚨 Недостатки: Может быть немного медленно из-за FFI и проблемы с поддержкой юникодных символов в Go.
🔧 Хабр
Библиотека пхпшника
Когда фронт и бэк на разных языках (например, JS + PHP), часто приходится писать одинаковые валидаторы дважды. Это не только лишняя работа, но и риск ошибок, когда логика валидации на фронте и бэке не совпадает.
🎯 Решение: Используем FFI (Foreign Function Interface) для запуска JavaScript-кода на PHP с помощью Go. Это позволяет использовать один и тот же валидатор и на фронте, и на бэке, обеспечивая синхронизацию логики.
✅ Преимущества: Один код для валидации на двух уровнях, меньше ошибок и проще поддержка.
🚨 Недостатки: Может быть немного медленно из-за FFI и проблемы с поддержкой юникодных символов в Go.
🔧 Хабр
Библиотека пхпшника
😁13❤1😢1