Pendahuluan
Pada pertemuan sebelumnya, kita telah mempelajari beberapa cara untuk membuka dan membaca file dengan PHP. Mulai dari menggunakan fungsi readfile()
, fungsi file_get_contents()
hingga menggunakan skema fopen()
dan variasinya.
Pada pertemuan kali ini, kita akan melanjutkan pembahasan tentang manipulasi file.
Membuat File Baru Dengan fopen()
Seperti yang sudah kita singgung sebelumnya, bahwa fungsi fopen()
menerima dua buah paramter:
- parameter pertama adalah nama file
- parameter kedua adalah mode pembukaan file
Untuk membuat file baru, kita bisa menggunakan mode w
, a
, w+
atau a+
. Silakan kembali lagi ke pertemuan sebelumnya untuk melihat jenis-jenis mode fopen()
yang bisa kita gunakan.
Sebagai contoh, untuk membuat file baru. Kita bisa menggunakan perintah berikut:
<?php
$namaFile = 'nama-bulan.txt';
$file = fopen($namaFile, 'w');
Kode program di atas akan membuat file baru bernama nama-bulan.txt
.
Permission File
Kode program di atas tidak mengeluarkan output apa pun.
Akan tetapi jika anda mendapatkan pesan error, maka pastikan bahwa PHP anda memiliki hak akses untuk menulis file pada lokasi yang terkait.
Menulis/Mengedit Konten File Dengan fwrite()
Kita telah berhasil membuat file baru dengan nama nama-bulan.txt
. Tapi jika file tersebut kita buka, kita tidak akan mendapati apa pun di sana.
Kita bisa menambahkan konten pada suatu file dengan perintah fwrite()
.
Ada pun behavior bagaimana cara menulis kontennya: apakah ia menimpa konten yang sudah ada, atau ia tetap mempertahankan konten file sebelumnya, maka itu tergantung mode yang kita pilih saat memanggil fungsi fopen()
.
Setelah ini, kita akan mencoba dan mempraktikkan beberapa mode fopen()
.
Menghapus Konten dan Menimpanya Dengan Yang Baru
Mode yang pertama adalah mode w
. Alias mode write only. Mode tersebut memiliki 2 tugas utama:
- membuat file baru jika file-nya tidak ada (sudah kita praktikkan di atas)
- meletakkan pointer ke baris pertama konten, sehingga ketika kita lakukan proses penulisan dengan fungsi
fwrite()
, isi konten yang lama akan ditimpa dengan yang baru.
Kita telah membuat file nama-bulan.txt
. Kita akan coba untuk menulis sesuatu di dalam file tersebut. Perhatikan kode program berikut:
<?php
$namaFile = 'nama-bulan.txt';
$file = fopen($namaFile, 'w');
$konten = "Januari\nFebruari\nMaret\nApril\nMei";
fwrite($file, $konten);
fclose($file);
Ketika kita jalankan program di atas lalu kita buka file nama-bulan.txt
. Kita akan mendapati konten file tersebut adalah sebagai berikut:
Januari
Februari
Maret
April
Mei
Anda bisa:
- mengganti isi dari variabel
$konten
- lalu mengeksekusi ulang skrip tersebut
- kemudian lihat apa yang terjadi dengan isi dari file
nama-bulan.txt
Mengedit Dengan Mempertahankan Konten Sebelumnya
Setelah melakukan percobaan di atas, kita tahu bahwa file nama-bulan.txt
akan senantiasa ditimpa dengan konten baru karena kita menggunakan mode w
ketika memanggil fungsi fopen()
.
Berbeda jika kita menggunakan mode a
, maka behavior yang akan kita dapatkan adalah:
- sistem akan berusaha membuka file yang dimaksud. Jika tidak ada, ia akan membuatnya.
- sistem akan meletakkan pointer pada bagian paling akhir dari file tanpa menghapus konten yang sebelumnya sudah ada.
Silakan ganti kode program di atas dengan kode program yang baru:
<?php
$namaFile = 'nama-bulan.txt';
$file = fopen($namaFile, 'a');
$konten = "Juni\nJuli\nAgustus\nSeptember\nOktober";
fwrite($file, $konten);
fclose($file);
Ketika saya jalankan kode program di atas sebanyak satu kali, saya mendapatkan output sebagai berikut:
Januari
Februari
Maret
April
MeiJuni
Juli
Agustus
September
Oktober
Perhatikan baris ke 5 dari output di atas, kata “Mei” dan “Juni” bergabung jadi satu. Itu karena output dari file sebelumnya tidak diakhiri dengan kode \n
alias karakter ganti baris.
Untuk mode lainnya dari fopen()
anda bisa melihatnya lagi pada tutorial manipulasi file php bagian 1. Anda bisa mengeksplorasinya secara mandiri.
Mengkopi File
Di antara hal yang lazim dilakukan dalam rangka memanipulasi file dalam PHP adalah: mengkopi file.
Untuk mengkopi atau menggandakan file, kita bisa memanggil fungsi bawaan PHP bernama copy()
.
Fungsi tersebut menerima 2 parameter:
- Parameter untuk nama file yang akan dikopi
- Lokasi/Nama file baru hasil kopian
Perhatikan contoh berikut, kita akan menggandakan file nama-bulan.txt
yang telah kita buat:
<?php
copy('nama-bulan.txt', 'nama-bulan-indo.txt');
Kita akan mendapatkan file baru yaitu nama-bulan-indo.txt
.
├── 13-manipulasi-file-part-2
├── index.php
├── nama-bulan-indo.txt
└── nama-bulan.txt
Memindahkan dan Merename File
Untuk memindahkan file, anda bisa menggunakan fungsi rename()
. Cara kerjanya sama saja dengan fungsi copy()
.
Ia menerima 2 paramter:
- parameter untuk nama/path file yang lama
- parameter untuk nama/path file yang baru
Fungsi rename()
akan memindahkan suatu file dari lokasi lama ke lokasi baru. Jika lokasi baru ternyata masih dalam satu direktori dan nama filenya berbeda, maka fungsi tersebut secara tidak langsung akan merename file yang dimaksud.
Kita akan coba memindahkan file nama-bulan.txt
ke lokasi yang sama, tapi dengan nama baru yaitu nama-bulan-old.txt
. Perhatikan kode program berikut:
<?php
rename('nama-bulan.txt', 'nama-bulan-old.txt');
Jika kita eksekusi, maka file nama-bulan.txt
seolah-olah ter-rename dengan menggunakan fungsi rename()
.
├── 13-manipulasi-file-part-2
├── index.php
├── nama-bulan-indo.txt
└── nama-bulan-old.txt
Menghapus File
Untuk menghapus file, kita bisa menggunakan fungsi unlink()
.
Perhatikan kode program berikut:
<?php
unlink('nama-bulan-old.txt');
Kode program di atas akan menghapus file nama-bulan-old.txt
.
Beberapa Fungsi Lainnya
Selain fungsi-fungsi yang telah kita pelajari di dua pertemuan ini, masih ada fungsi-fungsi lain yang bisa anda coba:
mkdir()
: berfungsi untuk membuat sebuah direktorirmdir()
: menghapus suatu folder. Tapi foldernya harus kosong.is_dir()
: berfungsi untuk memeriksa apakah suatu path adalah direktori atau bukanis_file()
: berfungsi untuk memeriksa apakah suatu path adalah file atau bukanscandir()
: mengembalikan konten dari sebuah direktori dalam bentuk array (konten bisa berupa file dan juga sub-direktori)getcwd()
: mengembalikan lokasi direktori yang sedang aktif
Kesimpulan
Bahasa pemrograman PHP adalah bahasa yang berjalan di server. Sehingga proses manipulasi file adalah suatu hal yang hampir menjadi keniscayaan.
Oleh karena itu, tidak heran bahwasanya PHP datang dengan berbagai macam fungsi bawaan yang memungkinkan kita bisa memanipulasi file mau pun direktori dengan mudah.
Pembahasan Selanjutnya
Pada pertemuan selanjutnya, insyaallah kita akan mengambil pembahasan terakhir untuk seri tutorial PHP tingkat menengah ini: yaitu pembahasan tentang regular expression.
Jangan lupa untuk share tutorial ini, ya! Terima kasih banyak.