Selamat datang di Part 70 dari seri tutorial pemrograman PHP Zero to Hero! Di bagian ini, kita akan mempelajari tentang PHP Streams, sebuah konsep powerful untuk menangani data dari berbagai sumber secara efisien. Streams memungkinkan Anda untuk membaca dan menulis data dari file, jaringan, memory, dan sumber lainnya dengan cara yang seragam.
Prasyarat:
Bayangkan Streams seperti pipa air. Anda memiliki sumber air (data) dan tujuan (tempat penyimpanan atau output). Streams menyediakan cara untuk memindahkan air dari sumber ke tujuan dengan berbagai manipulasi di sepanjang jalan. Di PHP, Streams adalah abstraksi dari operasi I/O (Input/Output), yang memungkinkan Anda untuk berinteraksi dengan berbagai jenis sumber data seperti file, URL, dan memory dengan cara yang konsisten.
Resources adalah pengenal khusus (identifier) yang merepresentasikan sumber eksternal seperti file, koneksi database, atau stream.
<?php
// Path ke file yang akan dibaca
$filename = 'data.txt';
// Membuka stream ke file dengan mode baca ('r')
$stream = fopen($filename, 'r');
if ($stream) {
// Membaca seluruh isi file ke dalam string
$content = stream_get_contents($stream);
// Menutup stream
fclose($stream);
// Menampilkan isi file
echo $content;
} else {
echo 'Gagal membuka file.';
}
?>
Penjelasan:
fopen($filename, 'r'): Membuka stream ke file 'data.txt' dalam mode baca. 'r' adalah mode yang menunjukkan bahwa kita hanya akan membaca file.stream_get_contents($stream): Membaca seluruh isi stream dan mengembalikannya sebagai string.fclose($stream): Menutup stream untuk membebaskan sumber daya.
<?php
// Path ke file yang akan ditulis
$filename = 'output.txt';
// Membuka stream ke file dengan mode tulis ('w')
$stream = fopen($filename, 'w');
if ($stream) {
// Data yang akan ditulis
$data = 'Hello, Streams!';
// Menulis data ke stream
fwrite($stream, $data);
// Menutup stream
fclose($stream);
echo 'Data berhasil ditulis ke file.';
} else {
echo 'Gagal membuka file untuk penulisan.';
}
?>
Penjelasan:
fopen($filename, 'w'): Membuka stream ke file 'output.txt' dalam mode tulis. 'w' akan menimpa isi file jika sudah ada.fwrite($stream, $data): Menulis data ke stream.Stream filters memungkinkan Anda untuk memodifikasi data saat dibaca atau ditulis melalui stream. Contohnya, kita akan mengenkripsi data saat ditulis ke file.
<?php
// Path ke file
$filename = 'encrypted.txt';
// Membuka stream untuk penulisan
$stream = fopen($filename, 'w');
if ($stream) {
// Menambahkan stream filter untuk enkripsi (contoh: ROT13)
stream_filter_append($stream, 'string.rot13');
// Data yang akan ditulis
$data = 'This is a secret message.';
// Menulis data ke stream (akan dienkripsi)
fwrite($stream, $data);
// Menutup stream
fclose($stream);
echo 'Data berhasil dienkripsi dan ditulis ke file.';
} else {
echo 'Gagal membuka file.';
}
?>
Penjelasan:
stream_filter_append($stream, 'string.rot13'): Menambahkan filter ROT13 ke stream. Filter ini akan mengenkripsi data menggunakan ROT13 cipher sebelum ditulis ke file.fclose() setelah selesai digunakan untuk membebaskan sumber daya.fopen() berhasil sebelum melanjutkan operasi stream.Buatlah sebuah program PHP yang membaca isi sebuah file CSV dan menulisnya ke file baru dengan format yang berbeda (misalnya, mengubah delimiter dari koma menjadi titik koma). Gunakan PHP Streams untuk membaca dan menulis data.