Dosya işleme, bir PHP geliştiricisi olarak çok sık yapmanız gereken bir şeydir.

Dosyaları farklı şekillerde işlemek için PHP dosya işleme işlevlerini kullanabilirsiniz. Bu işlevler, uygulamalarınızda özel hata günlüğünden önbelleğe alınmış dosyaların depolanmasına kadar değişen özellikler oluşturmak için kullanılabilir. Bu işlevlerle oluşturabileceğiniz yardımcı araçlara örnekler şunlardır:

  • Özel günlük kaydı ve hata ayıklama araçları
  • Uygulama yapılandırma depolaması
  • Front-End ve uygulama önbelleğe alma
  • Yerelleştirme desteği
  • ve daha fazlası

PHP, aşağıdakiler gibi çeşitli işlemleri gerçekleştirmenize izin veren çeşitli dosya işleme işlevleri sağlar:

  • Dosya oluştur ve aç
  • Dosyaya yaz
  • Dosyadan oku
  • Dosyayı sil
  • Dosyayı kapat

Bugün, nasıl kullanılacağına dair örneklerle birlikte her bir dosya işleminden geçeceğiz. Nasıl çalıştıklarını gerçekten öğrenip anlayabilmeniz için, takip ederken bu eğitimdeki örnekleri denemenizi tavsiye ederim. Ve bir şey sizin için beklendiği gibi çalışmazsa, bu eğitimin sonundaki beslemeyi kullanarak sorgularınızı göndermekten çekinmeyin.

Bu bölümde nasıl dosya oluşturulup açılacağını göreceğiz.

Bir dosya oluşturmak söz konusu olduğunda, fopen çoğu zaman kullanmaya başlayacağınız işlevdir.
Bir dosya oluşturmak için bu fonksiyonu kullanmak biraz kafa karıştırıcı görünebilir . Aslında, fopen işlev iki şey yapar : yoksa bir dosya oluşturur ve ayrıca okumak veya yazmak için açar.

Nasıl çalıştığını anlamak için aşağıdaki örneği inceleyelim;

<?php
$file_handle = fopen('/home/ynet/files/tmp.txt', 'w');
?>

Yukarıdaki örnekte, fopen fonksiyonu  /home/ynet/files/tmp.txt dosyasının var olup olmadığını kontrol edecek ve eğer varsa, yazmak için açacaktır. 'w'İkinci argümanı sağlayarak , dosyaya yazacağımızı belirtiyoruz. Dosya yoksa, hemen oluşturulur. Burada , yukarıdaki örnekteki / home/ynet/files/ dizininin, fopenişlevin bir dosya oluşturabilmesi için web sunucusu kullanıcısı tarafından yazılabilir olması gerektiğine dikkat etmek önemlidir.

fopenFonksiyonun ilk argümanı, açmak istediğiniz dosya adıdır . Yukarıdaki örnekte, ilk bağımsız değişkende /home/ynet/files/tmp.txt dosya adını sağladık . Yine, mutlak bir yol adı sağladığımızı unutmamak önemlidir.

İkinci argüman, açılan dosyaya ihtiyaç duyduğunuz erişim türünü belirleyen moddur. Fonksiyonu seçebilirsiniz farklı modlar sağlar. Örneğin:

  • Okumak için bir dosya açmak için modu kullanın : r
  • Okuma yazma ikisi için mod : r+
  • okuma ve ekleme modu : a

Örneğimizde, /home/ynet/files/tmp.txt dosyasını yalnızca yazmak için w açan modu kullandık . İşlev tarafından desteklenen farklı modları görmek için resmi belgeleri gözden geçirmekten çekinmeyin.

fopen okuma ve yazma gibi diğer dosya işlevleri için kullanılan bir dosya sistemi işaretçisini döndürür.

fopen Fonksiyon sadece yerel dosyalar için değil. Ayrıca diğer protokolleri de destekler ve ağınızda veya web'de başka yerlerden dosya açabilir. allow_url_fopen Yönergeyi PHP'de etkinleştirdiyseniz, uzak dosyaları da açabilirsiniz.

<?php
$file_handle = fopen('https://your-website-url/tmp.txt', 'r');
?>

Yönergeyi etkinleştirdiğinizde, uzaktan dosya yürütme ve diğer saldırılar için kapıyı açtığından bazı güvenlik riskleri oluşturduğunuzu unutmamak gerçekten önemlidir allow_url_fopen. Bu yönergeyi etkinleştirecekseniz uygulamanızda ekstra güvenlik önlemleri aldığınızdan emin olun.

PHP ile bir dosyaya yazmanın birkaç farklı yolu vardır.

fwrite() Fonksiyonu;

Birincisi ve en önemlisi, fwrite dize içeriklerini dosya tanıtıcısı tarafından referans verilen dosya akışına yazmanıza izin veren işlevdir. Nasıl çalıştığını anlamak için aşağıdaki örneği inceleyelim.

<?php
$file_handle = fopen('/home/ynet/files/tmp.txt', 'a+');
fwrite($file_handle, 'Tuts+ is a great online resource to learn skills you want!');
fwrite($file_handle, "n");
fwrite($file_handle, 'Visit yazilim.net to know more!');
fclose($file_handle);
?>

Öncelikle /home/ynet/files/tmp.txt dosyasını a+ dosyanın sonuna yerleştirilmiş dosya işaretçisi ile okuma ve yazma için açan modda açtık . Böylelikle içeriğimiz diğer içeriklerden sonra dosyanın sonuna eklenecektir. Ardından, fwrite bir dizge yazmak için işlevi kullandık . 

fwrite Fonksiyonun ilk argümanı, tarafından döndürülen dosya sistemi göstericisidir fopen- bu, fwrite nereye yazılacağını nasıl bilir. Ve ikinci argüman, bir dosyaya yazmak istediğimiz bir dizedir. Yukarıdaki örnekte görebileceğiniz gibi fwrite, dosyayı kapatmadan önce bir dizi dize yazmak için işlevi birden çok kez kullanabilirsiniz.

Son olarak, fclose dosyayı kapatmak için işlevi kullandık . Kapatmak istediğiniz dosya tanıtıcısı olan tek bir argüman alır. fcloseDosya işlemlerinizi bitirdikten sonra işlevi kullanarak dosyaları kapatmak her zaman iyi bir uygulamadır.

file_put_contents() Fonksiyonu : 

Önceki bölümde, fwrite bir dosyaya yazmak için kullanılan fonksiyonu gördük. Bir dosyaya yazmak istiyorsanız fopen ilk etapta onu fonksiyon ile açmanız gerektiğini fark etmişsinizdir . Bundan sonra, fwrite verilerinizi bir dosyaya yazmak için fclose işlevi kullanmanız gerekir ve son olarak dosyayı kapatmak için işlevi kullanmanız gerekir .

Bu sana çok fazla geliyorsa, bir kısayol var: file_put_contents.

file_put_contents Fonksiyonu tek bir çağrıda bir dosyaya veri yazmak için izin verir.

Nasıl çalıştığını görelim:

<?php
file_put_contents('/home/ynet/files/tmp.txt', "Ynet+ is a great online resource to learn skills you want! n Visit yazilim.net to know more!");
?>

Gördüğünüz gibi, file_put_contents bir dosyaya sadece bir veri parçası yazmak istediğinizde işlev bir kısayoldur.

Artık nasıl dosya oluşturacağınızı ve bir dosyaya yazacağınızı biliyorsunuz. Bu bölümde size bir dosyadan nasıl okunacağını göstereceğiz:

fread() Fonksiyonu İla Okuma

fread Fonksiyonu bir dosyadan okumanızı sağlar. Şuna benzer fwrite, ancak okumak istediğiniz uzunluğu bayt cinsinden sağlamanız gerekir.

Nasıl çalıştığını anlamak için aşağıdaki örneğe bir göz atalım:

<?php
$file_handle = fopen('/home/ynet/files/tmp.txt', 'r');
$contents = fread($file_handle, filesize('/home/ynet/files/tmp.txt'));
fclose($file_handle);
?>

Dosyanın tüm içeriğini $content değişkene okumak için  fread() fonksiyonunu kullandık. Bu fonksiyonun ilk argümanı dosya sistemi göstericisidir, böylece nereden okuyacağını bilir. İkinci argüman, bir dosyadan okumak istediğiniz bayt cinsinden uzunluktur. Bizim durumumuzda, /home/ynet/files/tmp.txt dosyasının tüm içeriğini okumak istiyoruz ve bu nedenle filesize dosyanın boyutunu ölçmek için işlevi kullandık .

file_get_contents() Fonksiyonu İle Okuma

Önceki bölümde, fread okumak istediğiniz uzunluğu bayt cinsinden belirterek bir dosyayı okumanıza izin veren fonksiyonu inceledik. 
Aynı anda bir dosyanın tamamını okumak istiyorsanız, sadece bunu sağlayan bir fonksiyon var:  
file_get_contents().

Hemen bir örnek ile nasıl çalıştığını görelim : 

<?php
$contents = file_get_contents('/home/ynet/files/tmp.txt');
?>

Gördüğünüz gibi, file_get_contents işlevi kullanmak oldukça basittir - sadece ilk bağımsız değişkende bir dosya adı girin.

Bu son bölümde, dosyaları nasıl silebileceğinizi göreceğiz. PHP'de bir dosyayı silmek için unlink() fonksiyonunu kullanın . Nasıl çalıştığını görmek için bir örnek üzerinden geçelim: 

<?php
If (unlink('/home/ynet/files/tmp.txt')) {
  // file was successfully deleted
} else {
  // there was a problem deleting the file
}
?>

unlink() Fonksiyonun ilk argümanı, silmek istediğiniz bir dosya adıdır. unlink() Fonksiyonu silme işlemi başarılı olup olmadığını bağlı olarak    TRUE ya FALSE, verir.