TGViewer
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter @phpproglib · 10.5K subscribers
Post #6377 2.07K
📂 Шпаргалка по вводу-выводу

Чтобы не гуглить каждый раз: как читать из 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 дописывает, а не перезаписывает.

▪️ Копирование файлов (быстро и потоково):
<?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 — удобные «псевдо-файлы» для буферизации в памяти.

Библиотека пхпшника
  • 👍 8
  • 🔥 2
  • ❤ 1
More from @phpproglib
  1. Sep 23, 2026🚀 Свежий релиз Laravel 13 с набором улучшений и исправлений ✅ добавлена поддержка valkey:…
  2. Sep 21, 2026⚡️ PHP 8.6 выйдет 19 ноября 2026 года. Сейчас версия находится в beta. Самые заметные изме…
  3. Sep 20, 2026❓ Какие существуют проблемы в многопоточной среде? Основные проблемы многопоточности: 1️⃣…
  4. Sep 19, 2026🌞 В Symfony 8.2 появилось 29 новых Bundle — теперь компоненты вроде Mailer, Messenger и C…
  5. Sep 19, 2026А вы уже забрали свой подарок ко Дню программиста? К вашему профессиональному празднику Tp…
  6. Sep 18, 2026🐸 Библиотека пхпшника
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →