PHP - Melarankan Fail: Panduan Lengkap untuk Pemula

Hai sana, para pemaju PHP yang ambisi tinggi! Hari ini, kita akan melaksanakan perjalanan yang menarik ke dalam dunia manipulasi fail di PHP. Khususnya, kita akan mengkaji bagaimana untuk melarangkan fail dalam direktori. Jangan khawatir jika anda baru dalam bidang programming - saya akan menghidangkan setiap langkah dengan kesabaran seekor penyu tua. Mari kita masuk ke dalamnya!

PHP - Listing Files

Mengetahui Melarangkan Direktori

Sebelum kita melompat ke kod, mari kita bicarakan apa arti melarangkan fail. Bayangkan anda ada folder di komputer anda yang penuh dengan pelbagai jenis fail. Melarangkan fail adalah seperti meminta PHP untuk memandang ke dalam folder itu dan memberitahu anda apa yang ada di sana. Ini adalah kemahiran penting untuk banyak aplikasi web, daripada pengurus fail ke galeri imej.

Sekarang, PHP menyediakan dua fungsi utama untuk melaksanakan tugas ini: readdir() dan scandir(). Mari kita kaji setiap daripada ini secara mendetail.

Fungsi readdir()

Apa itu readdir()?

Fungsi readdir() adalah seperti kanak-kanak yang curioso yang membuka pintu, memandang ke dalam bilik, dan memberitahu anda tentang satu benda yang mereka lihat sekali. Ia agak kuno tetapi masih sangat berguna dalam situasi tertentu.

Bagaimana untuk Menggunakan readdir()

Mari kita lihat contoh ringkas:

<?php
$dir = "/path/to/your/directory";

// Buka direktori
if ($handle = opendir($dir)) {
// Lari melalui direktori
while (false !== ($entry = readdir($handle))) {
// Skip . dan .. entries
if ($entry != "." && $entry != "..") {
echo "$entry\n";
}
}
// Tutup handle direktori
closedir($handle);
}
?>

Mari kita pecahkan ini:

  1. Kita memulakan dengan menentukan path direktori.
  2. Kita gunakan opendir() untuk membuka direktori dan mendapatkan handle.
  3. Kita gunakan perulangan while dengan readdir() untuk membaca setiap entry.
  4. Kita skip entry . dan .. (yang mewakili direktori sekarang dan direktori induk).
  5. Kita echo nama setiap fail atau subdirektori.
  6. Akhirnya, kita tutup handle direktori.

Pros dan Cons of readdir()

Pros Cons
Pengunaan memori rendah Lebih kompleks untuk digunakan
Bagus untuk direktori besar Memerlukan penyusunan manual
Boleh memproses satu fail pada masa yang sama Tidak menyediakan butiran fail

Fungsi scandir()

Apa itu scandir()?

Sekarang, mari kita kenal scandir() - pengurus pustaka yang ramah di kalangan fungsi PHP. Ia membaca keseluruhan direktori sekali dan mengembalikan array yang terdiri daripada semua fail dan direktori yang ia temui.

Bagaimana untuk Menggunakan scandir()

Ini adalah contoh ringkas:

<?php
$dir = "/path/to/your/directory";

// Imbas direktori dan dapatkan senarai fail
$files = scandir($dir);

// Lari melalui array dan cetak setiap fail
foreach ($files as $file) {
// Skip . dan .. entries
if ($file != "." && $file != "..") {
echo "$file\n";
}
}
?>

Mari kita pecahkan ini:

  1. Kita tentukan path direktori.
  2. Kita gunakan scandir() untuk mendapatkan array semua fail dan direktori.
  3. Kita gunakan perulangan foreach untuk mengulang array.
  4. Kita skip entry . dan ...
  5. Kita echo nama setiap fail atau subdirektori.

Pros dan Cons of scandir()

Pros Cons
Mudah digunakan Pengunaan memori tinggi
Mengembalikan array yang disusun Mungkin lambat untuk direktori yang sangat besar
Mudah untuk memanipulasikan hasil Memuat semua fail ke memori sekali

Penggunaan Lanjut: Penyaringan dan Penyusunan

Sekarang, kita telah melihat asas, mari kita buat sedikit perbezaan! Apa kalau anda hanya mahu melarangkan jenis fail tertentu atau menguruskan mereka dalam cara khusus?

Penyaringan Fail Mengikut Suffix

Ini adalah contoh bagaimana untuk melarangkan hanya fail PHP:

<?php
$dir = "/path/to/your/directory";
$files = scandir($dir);

foreach ($files as $file) {
if (pathinfo($file, PATHINFO_EXTENSION) == "php") {
echo "$file\n";
}
}
?>

Dalam contoh ini, kita gunakan fungsi pathinfo() untuk memeriksa suffex fail.

Penyusunan Fail Mengikut Waktu Modifikasi

Mari kita susun fail mengikut yang dimodifikasi baru-baru ini:

<?php
$dir = "/path/to/your/directory";
$files = scandir($dir);

// Buang . dan .. daripada array
$files = array_diff($files, array('.', '..'));

// Susun fail mengikut masa modifikasi
array_multisort(
array_map('filemtime', array_map(function($file) use ($dir) {
return $dir . '/' . $file;
}, $files)),
SORT_DESC,
$files
);

foreach ($files as $file) {
echo "$file\n";
}
?>

Skrip ini menggunakan array_multisort() bersamaan dengan filemtime() untuk menyusun fail mengikut masa modifikasi mereka.

Kesimpulan

Tahniah! Anda telah membuat langkah pertama ke dalam dunia manipulasi fail dengan PHP. Sama ada anda menggunakan readdir() yang methodik atau scandir() yang cepat dan mudah, anda sekarang mempunyai kuasa untuk melarangkan dan menguruskan fail dalam aplikasi PHP anda.

Ingat, seperti belajar menunggang basikal, penggunaan yang baik memerlukan latihan. Jangan khawatir untuk mencuba berbagai-bagai senario dan kombinasi fungsi ini. Sebelum anda tahu, anda akan dapat membina sistem pengurusan fail kompleks dengan mudah!

Terus kod, terus belajar, dan terutama, bersenang-senang! Sampaijumpa lagi, selamat PHP-ing!

Credits: Image by storyset