Manajemen Sistem File dengan PHP

Saya membuat blog sebelumnya tentang menggunakan PHP pada baris perintah, tetapi saya tidak membahas penggunaan PHP untuk mengakses sistem file dalam posting itu untuk kepentingan ukuran posting blog. Saya menggunakan posting ini untuk membahas beberapa dasar-dasar manajemen sistem file PHP.

Banyak dari kita yang menulis dan menggunakan skrip melakukannya untuk fungsi yang terkait dengan sistem file. Kami membuat skrip tindakan yang biasa kami lakukan di sistem file. Secara khusus, kita sering mendapati diri kita perlu menyalin file, mengganti nama file, menghapus file, dan membuka dan menutup file. Kita sering kali perlu melakukan logika tertentu berdasarkan karakteristik file dan direktori tertentu. Akan sulit untuk secara serius mempertimbangkan bahasa sebagai bahasa scripting tanpa dukungan sistem file yang layak. Untungnya, PHP memiliki dukungan bawaan untuk manajemen sistem file. Dukungan ini dapat digunakan bersama dengan baris perintah PHP.

W3Schools.com adalah sumber daya yang terbukti berharga untuk mempelajari teknologi web dan cakupannya dari Fungsi Filesystem PHP adalah contoh lain dari itu. Halaman tersebut mengingatkan kita bahwa fungsi sistem file PHP "adalah bagian dari inti PHP" dan "memungkinkan Anda untuk mengakses dan memanipulasi sistem file." Lebih penting lagi, halaman ini juga merangkum detail konfigurasi sistem file PHP, fungsi sistem file PHP, dan konstanta sistem file PHP. Mengklik nama fungsi akan mengarahkan ke halaman dengan detail lebih lanjut tentang fungsi itu serta contoh kode PHP yang menggunakan fungsi itu. Karena saya hanya akan membahas sebagian dari ini di posting ini, saya ingin memastikan untuk mereferensikan halaman W3Schools ini lebih awal.

Skrip berikut demoPhpFileSystemManagement.php,, menunjukkan beberapa fungsi PHP untuk menentukan informasi file. Saya mendaftar seluruh skrip di sini dan kemudian mereproduksi bagian-bagian dari skrip itu lagi saat saya membahasnya.

demoPhpFileSystemManagement.php

#!/usr/bin/php  

Sebelum membahas lebih rinci tentang fungsi sistem file PHP yang digunakan dalam contoh di atas, saya telah mengamati latar belakang Java saya dalam kode PHP itu. Misalnya, saya menggunakan komentar bergaya Javadoc untuk fungsi dalam kode. Untungnya, PHPDocumentor menghormati komentar bergaya Javadoc saat membuat dokumentasi kode. Kode di atas juga menunjukkan perbedaan konvensi penamaan yang biasa saya gunakan di Java (kasus unta) dan konvensi penamaan PHP (semua nama huruf kecil dengan kata-kata yang dipisahkan oleh garis bawah) seperti yang ditunjukkan oleh fungsi PHP yang dipanggil.

Bagian pertama dari skrip PHP menyediakan menu baris perintah teks sederhana yang meminta pengguna untuk memasukkan pilihan dan nama file serta jalur. Potongan kode ini tidak melakukan apa pun dengan fungsi sistem file PHP, tetapi mendemonstrasikan input dan output standar PHP dan pernyataan switch PHP. Bagian pertama itu direproduksi di sini.

Menu Baris Perintah dan Pemrosesan Input

do { echo "\nWhich PHP File System Operation Do You Want To Run?\n\n"; echo "1. Parse File Path Information\n"; echo "2. Acquire an Absolute Path\n"; echo "3. Get File Size\n"; echo "4. Get Disk Size and Free Space\n"; echo "5. Get File Times\n"; echo "\nEnter 0 to Exit\n"; echo "\n\nYour Choice: "; $selection = trim(fgets(STDIN)); } while (!( ($selection == "0") || ($selection == "1") || ($selection == "2") || ($selection == "3") || ($selection == "4") || ($selection == "5"))); switch ($selection) { case "1": echo "Enter a file path: "; $filePath = trim(fgets(STDIN)); $filePathInfo = parseFilePath($filePath); echo $filePathInfo; break; case "2": echo "Enter path: "; $filePath = trim(fgets(STDIN)); $realPath = convertPathToAbsolute($filePath); echo $realPath; break; case "3": echo "Enter path and name of file: "; $filePath = trim(fgets(STDIN)); $sizeOfFile = getSizeOfFile($filePath); echo "File ".$filePath." has a size of ".$sizeOfFile." bytes."; break; case "4": echo "Enter disk label: "; $diskLabel = trim(fgets(STDIN)); $diskSpace = getDiskSizeAndFreeSpace($diskLabel); $percentageFree = $diskSpace[1] / $diskSpace[0]; echo "Disk ".$diskLabel." has ".$diskSpace[1]." of ".$diskSpace[0] ." bytes free (".round($percentageFree*100)."%)."; break; case "5": echo "Enter a file who access/changed/modified times are desired: "; $filePath = trim(fgets(STDIN)); $fileTimes = getFileTimes($filePath); echo "File ".$filePath." was last accessed on ".$fileTimes[0] .", was last changed on ".$fileTimes[1] .", and was last modified on ".$fileTimes[2]; break; case "0": default: echo "\n\n"; exit(); } 

Sisa dari skrip PHP berisi fungsi yang menggunakan dan mendemonstrasikan fungsi manajemen sistem file PHP.

PHP menyediakan fungsi untuk akses mudah ke detail jalur file seperti direktori file, nama lengkap file itu sendiri, ekstensi file, dan nama file tanpa ekstensi. Beberapa di antaranya diperlihatkan dalam contoh di atas dalam parseFilePathfungsi, yang direproduksi selanjutnya. Fungsi ini menunjukkan fungsi nama dasar, dirname, dan pathinfo PHP.

PHP Menyediakan Informasi Jalur File

/** * Parse the provided file path. Demonstrates the following PHP functions: * * - basename() : Provides base portion of file path (file name). * - dirname() : Directory name portion of file path. * - pathinfo() : All components of path (basename, directory name, extension). * * @param $filePath File path to be parsed. * @return File path information in a single String. */ function parseFilePath($filePath) { echo "Parsing file path ...", $filePath, "\n"; $fileBaseName = basename($filePath); $fileDirectoryName = dirname($filePath); $pathInfo = pathinfo($filePath); return "File Name: ".$fileBaseName."\nDirectory Name: ".$fileDirectoryName ."\nFileName: ".$pathInfo['basename']."\nDirectory Name: " .$pathInfo['dirname']."\nFile Extension: ".$pathInfo['extension'] ."\nFile name without extension: ".$pathInfo['filename']; } 

Output dari menjalankan di atas terhadap file contoh sekarang ditampilkan.

PHP menyediakan fungsi realpath berguna yang menyediakan versi absolut dari jalur yang disediakan. Misalnya, ini akan menyelesaikan tautan lunak dan direktori relatif untuk mengembalikan jalur absolut. Ini ditunjukkan dalam convertPathToAbsolutefungsi dalam contoh saya (dan direproduksi dalam daftar kode berikutnya).

Mendemonstrasikan Jalan Mutlak melalui jalur nyata

/** * Convert the provided path to an absolute path. * * @param $filePath File path to be made absolute. * @return Absolute version of provided file path. */ function convertPathToAbsolute($filePath) { echo "Converting file path ", $filePath, " to absolute path...\n"; return realpath($filePath); } 

Bagian skrip di atas menghasilkan keluaran sebagai berikut.

PHP memudahkan untuk menentukan ukuran file dengan fungsi filesize bernama tepat. getSizeOfFileFungsi saya mendemonstrasikan hal ini dan terdaftar sendiri di daftar kode berikutnya.

Mendapatkan Ukuran File di PHP

/** * Determine size of provided file. * * @param? $filePath Path and name of file whose size is needed. * @return Size of file indicated by provided file path and name (in bytes). */ function getSizeOfFile($filePath) { echo "Getting size of file ", $filePath, "...\n"; return filesize($filePath); } 

Kode mengarah ke output yang ditunjukkan pada gambar berikutnya.

PHP juga memudahkan untuk mendapatkan informasi ruang disk. Fungsi disk_total_space dan disk_free_space PHP ditunjukkan dalam daftar kode di bawah ini untuk fungsi getDiskSizeAndFreeSpace saya.

Ukuran Disk PHP dan Ruang Kosong

/** * Provide disk size and free space on disk for provided disk. * * @param $diskLabel Label of disk whose total size and free space are to be * provided. * @return Array of two elements, first of which is total disk space (in bytes) * and second of which is free disk space (in bytes). */ function getDiskSizeAndFreeSpace($diskLabel) { return array(disk_total_space($diskLabel), disk_free_space($diskLabel)); } 

Contoh di atas tidak hanya mendemonstrasikan fungsi disk_total_space dan disk_free_space PHP, tetapi juga mendemonstrasikan penggunaan fungsi array PHP untuk membuat array dan menempatkan elemen di dalam array dalam satu pernyataan.

Output dari bagian skrip ini ditampilkan berikutnya.

Fungsi terakhir dalam skrip saya adalah getFileTimesdan tujuannya adalah untuk mendemonstrasikan tiga metode PHP untuk mengakses tanggal / waktu yang terkait dengan file. Secara khusus, fungsi fileatime, filectime, dan filemtime didemonstrasikan.

Waktu File PHP