Sering kali Anda perlu memindahkan file atau menyimpan beberapa data di dalamnya dalam PHP. Dalam kedua kasus tersebut, mengetahui sebelumnya apakah file ada atau tidak dapat membantu kita menghindari beberapa perilaku yang tidak diharapkan
PHP hadir dengan berbagai fungsi untuk menangani berbagai jenis kueri yang terkait dengan file. Dalam tutorial ini, saya akan memberi Anda ikhtisar singkat tentang semua fungsi ini sehingga Anda dapat memilih salah satu yang paling sesuai dengan situasi Anda
Pentingnya Memeriksa apakah File Ada
Ada banyak skenario di mana memeriksa apakah ada file sebelum melakukan hal lain bisa jadi penting. Katakanlah situs web Anda mengizinkan pengguna untuk mengunggah file gambar di server Anda yang dapat mereka akses nanti. Wajar untuk berasumsi bahwa selalu ada kemungkinan nama file yang bentrok jika banyak pengguna menggunakan layanan Anda untuk sering mengunggah banyak file
Dalam kasus seperti itu, penting untuk memeriksa apakah sudah ada file lain di lokasi tempat Anda ingin menyimpan file pengguna yang baru diunggah. Anda kemudian akan memiliki opsi untuk mengambil beberapa langkah seperti mengganti nama file menjadi sesuatu yang lain atau memberi tahu pengguna bahwa unggahan mereka akan menimpa file yang ada
Mari pertimbangkan situasi lain di mana Anda seharusnya menambahkan data ke file di PHP. Jika file yang Anda buat untuk menulis semua data Anda dihapus karena suatu alasan, fungsi seperti <?php 11 hanya akan membuat file baru dengan nama yang ditentukan dan menyimpan data Anda di dalam file yang baru dibuat. Ini mungkin diinginkan dalam beberapa situasi, tetapi itu tidak selalu terjadi. Jadi masuk akal untuk memeriksa apakah file tersebut ada sebelumnya jika Anda sudah mengharapkannya ada sebelum Anda mulai menulis data Anda
Memeriksa apakah File Ada di PHP
Ada tiga fungsi berbeda yang dapat Anda gunakan untuk memeriksa apakah ada file di PHP
Fungsi pertama adalah <?php _12. Fungsi ini menerima satu parameter yaitu jalur tempat file Anda berada. Perlu diingat bahwa ini akan mengembalikan true untuk file dan direktori yang ada. Ini mungkin atau mungkin tidak cukup untuk kebutuhan Anda
Anda dapat mempertimbangkan untuk menggunakan fungsi <?php _13 jika Anda ingin memastikan bahwa jalur yang Anda tentukan mengarah ke file dan bukan direktori. Demikian pula, Anda dapat menggunakan fungsi <?php _14 untuk memeriksa apakah jalur yang Anda tentukan ada dan apakah itu mengarah ke direktori
1<?php 23$name = "squares.txt"; 4$directory = "squares.zip"; 56if(file_exists($name)) { <?php 0<?php 1<?php 2<?php 3<?php 4<?php 5<?php 6<?php 7<?php 8<?php 9<?php 3212223242526<?php 3282930
keluaran
132234336
Dalam contoh di atas, saya sengaja menamai salah satu kotak direktori. zip untuk menunjukkan bahwa penting untuk melakukan pemeriksaan sendiri alih-alih berasumsi bahwa nama file yang disediakan sebenarnya adalah nama file atau direktori
Penting untuk diingat bahwa <?php 13 dan <?php 14 akan mengembalikan <?php 17 bahkan untuk jalur yang benar-benar ada saat direktori induk tidak memiliki izin yang tepat
Periksa apakah File Ada dan Dapat Dibaca atau Dapat Ditulis
Dua fungsi lagi bernama <?php 18 dan <?php 19 dapat digunakan untuk mendapatkan beberapa informasi tambahan tentang file, selain memeriksa apakah itu ada
Seperti namanya, fungsi <?php 18 akan memeriksa dua hal. pertama, bahwa file atau direktori tersebut benar-benar ada, dan kedua, bahwa file tersebut dapat dibaca. Demikian pula, fungsi <?php _19 juga memeriksa dua hal, bahwa file atau direktori ada dan dapat ditulisi
1<?php 23$name = "squares.txt"; 45$name = "squares.txt"; 4____1212________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________ges
keluaran
1$directory = "squares.zip"; 02$directory = "squares.zip"; 2
Saya akan menyarankan Anda untuk berhati-hati saat menginterpretasikan nilai kembalian dari kedua fungsi ini. Misalnya, insting pertama kita ketika <?php _18 mengembalikan false adalah berpikir bahwa file yang kita minta tidak dapat dibaca. Namun, fungsi juga mengembalikan false jika file tidak ada. Penting untuk selalu mengingat aspek fungsi ini
Waspadai Hasil Tembolok
Nilai pengembalian yang Anda dapatkan dari panggilan ke kelima fungsi ini—yaitu, <?php 12, <?php 13, <?php 14, <?php 18, dan <?php 27—di-cache. Ini berarti panggilan berulang ke suatu fungsi, katakanlah <?php 13, dapat menunjukkan hasil yang basi
PHP menyimpan hasil dari fungsi-fungsi ini untuk meningkatkan kinerja. Ini memastikan bahwa beberapa panggilan untuk menanyakan file yang sama bekerja lebih cepat. Namun, nilai pengembaliannya akan tetap sama meskipun file berubah selama eksekusi skrip
Hasilnya hanya di-cache untuk file yang sudah ada. Ini berarti memanggil fungsi <?php _13 akan terus mengembalikan <?php 17 untuk file yang tidak ada tetapi akan mulai mengembalikan <?php 31 segera setelah file dibuat. Di sisi lain, fungsi akan terus mengembalikan <?php 31 untuk file yang ada selama panggilan pertama, bahkan setelah file dihapus
1<?php 23$name = "squares.txt"; 45<?php 66<?php 8<?php 0<?php 3<?php 2<?php 4<?php 558<?php 760<?php 921<?php 622<?php 824<?php 32628if(file_exists($name)) { 029if(file_exists($name)) { 2<?php 6if(file_exists($name)) { 4<?php 8if(file_exists($name)) { 6if(file_exists($name)) { 7if(file_exists($name)) { 8if(file_exists($name)) { 9<?php 00<?php 3<?php 02<?php 0330
Jika Anda menjalankan cuplikan kode di atas untuk file yang benar-benar ada dan kemudian menghapusnya secara manual saat skrip menunggu, memanggil <?php 13 akan tetap mengembalikan <?php 31. Namun, Anda bisa mendapatkan hasil yang benar hanya dengan menelepon <?php 35 sebelum menanyakan keberadaan file lagi
keluaran
1342343<?php 10
Hal lain yang perlu diingat adalah bahwa panggilan ke <?php 36 secara otomatis menghapus cache, sehingga Anda mendapatkan hasil baru untuk panggilan ke fungsi seperti <?php 13 nanti
Pikiran Akhir
Kami memulai tutorial ini dengan mempelajari pentingnya memeriksa keberadaan file di PHP. Setelah itu, kami belajar tentang berbagai fungsi yang dapat Anda gunakan untuk memeriksa apakah ada file di PHP. Kami juga belajar tentang kelebihan dan kekurangan yang mungkin dimiliki beberapa fungsi ini
Seperti yang saya sebutkan menjelang akhir, PHP akan meng-cache hasil dari beberapa pemanggilan fungsi ini untuk meningkatkan kinerja. Oleh karena itu, pastikan Anda menghapus cache sebelum melakukan sesuatu yang penting dengan file tersebut