Selamat datang di part 67 dari seri tutorial Tutorial Pemrograman! Di part ini, kita akan membahas tentang PHP Streams, sebuah fitur powerful yang memungkinkan kita untuk membaca dan menulis data dari berbagai sumber dan tujuan secara efisien. Jika pada part sebelumnya kita telah belajar tentang bagaimana membangun RESTful API sederhana, kini kita akan melihat bagaimana PHP Streams dapat meningkatkan performa dan fleksibilitas dalam menangani data, terutama dalam konteks API yang kompleks. Prasyarat untuk tutorial ini adalah pemahaman dasar tentang file handling dan networking dalam PHP.
Bayangkan PHP Streams seperti aliran air. Air (data) dapat mengalir dari sumber (misalnya, file, jaringan, memori) ke tujuan (misalnya, file lain, output browser, database). Streams menyediakan abstraksi yang memungkinkan kita untuk berinteraksi dengan sumber dan tujuan data secara seragam, tanpa perlu khawatir tentang detail implementasi masing-masing. Dalam dunia nyata, ini seperti menggunakan selang air untuk menyiram tanaman. Anda tidak perlu tahu dari mana air berasal (sumur, sungai, atau keran), selang air akan memastikan air sampai ke tanaman dengan efisien.
Contoh berikut menunjukkan bagaimana membaca data dari file menggunakan streams:
";
}
fclose($stream);
} else {
echo "Tidak dapat membuka file.";
}
?>
Penjelasan:
$file = 'data.txt';: Mendefinisikan nama file yang akan dibaca.$stream = fopen($file, 'r');: Membuka file dengan mode baca ('r') dan membuat stream resource.while (!feof($stream)): Melakukan perulangan selama belum mencapai akhir file (end-of-file).$line = fgets($stream);: Membaca satu baris dari stream.echo $line . "<br>";: Menampilkan baris yang dibaca ke browser.fclose($stream);: Menutup stream resource.Contoh berikut menunjukkan bagaimana menulis data ke file menggunakan streams:
Penjelasan:
$file = 'output.txt';: Mendefinisikan nama file yang akan ditulis.$stream = fopen($file, 'w');: Membuka file dengan mode tulis ('w') dan membuat stream resource. Jika file tidak ada, file akan dibuat. Jika file sudah ada, isinya akan ditimpa.$data = "Ini adalah contoh data yang akan ditulis ke file.\n";: Mendefinisikan data yang akan ditulis.fwrite($stream, $data);: Menulis data ke stream.fclose($stream);: Menutup stream resource.Contoh berikut menunjukkan bagaimana mengirim HTTP request menggunakan streams:
[
'method' => 'GET',
'header' => "Content-type: application/json\r\n"
]
];
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
if ($result === FALSE) {
echo "Gagal mengambil data dari API.";
} else {
echo $result;
}
?>
Penjelasan:
$url = 'https://api.example.com/data';: Mendefinisikan URL API yang akan diakses.$options: Mendefinisikan opsi HTTP request, termasuk method dan header.$context = stream_context_create($options);: Membuat stream context dengan opsi yang telah didefinisikan.$result = file_get_contents($url, false, $context);: Mengirim HTTP request dan membaca response.fclose() setelah selesai menggunakannya. Jika tidak, dapat menyebabkan memory leak atau masalah resource lainnya.fopen() berhasil membuka stream sebelum melakukan operasi lain.Buatlah sebuah script PHP yang membaca data dari sebuah file CSV, memproses data tersebut (misalnya, menghitung rata-rata dari kolom tertentu), dan menulis hasilnya ke file lain menggunakan streams. Gunakan fungsi fgetcsv() untuk membaca data dari file CSV.