PHP
Özet - Dosya işlemleri
file_get_contents, file_put_contents ve fopen'la günlük defteri uygulaması yazarsın.
Özet: dosya işlemleri araç çantası
Bu grupta dosya işlemleri için iki yaklaşım öğrendin:
- Tek seferlik:
file_get_contents() ile dosyayı dize olarak okur, file_put_contents() ile dize yazarsın. Kısa ve öz işler için ideal. - Tanıtıcı tabanlı:
fopen() ile açar, fwrite()/fread() ile çalışır, fclose() ile kapatırsın. Adım adım okuma/yazma ve farklı modlar gerektiğinde kullanılır.
Şimdi bu iki yaklaşımı birleştiren küçük bir günlük defteri uygulaması yazacağız.
Uygulama Günlük defteri — tek seferlik yaklaşım
İki kaydı gunluk.txt dosyasına yaz. İlk kaydı file_put_contents() ile 'Günlük başladı' . PHP_EOL olarak yaz (dosyayı sıfırlar). İkinci kaydı ekleme bayrağıyla 'Bugün PHP öğrendim.' . PHP_EOL olarak ekle. Sonra file_get_contents() ile dosyayı oku ve echo ile ekrana yaz.
Örnek çözümü göster
file_put_contents($file, 'Günlük başladı' . PHP_EOL); ile başla. Sonra file_put_contents($file, 'Bugün PHP öğrendim.' . PHP_EOL, FILE_APPEND); ekle. Son olarak echo file_get_contents($file);.
Örnek çözüm:
<?php
$file = __DIR__ . '/gunluk.txt';
// İlk kaydı yaz
file_put_contents($file, 'Günlük başladı' . PHP_EOL);
// İkinci kaydı FILE_APPEND ile ekle
file_put_contents($file, 'Bugün PHP öğrendim.' . PHP_EOL, FILE_APPEND);
// Dosyayı oku ve ekrana yaz
echo file_get_contents($file);
Tanıtıcı tabanlı akışın özeti
Tanıtıcı tabanlı yaklaşım dört adımdan oluşur:
fopen() ile uygun modda aç ('r', 'w', 'a').fwrite() ile yaz ya da fread() ile oku.- Gerekirse farklı modda yeniden aç.
fclose() ile kapat.
Bu akış, mod seçimine göre esneklik sağlar ve kaynakların açık kalmasını önler. Şimdi aynı günlük defterini tanıtıcılarla yazacağız.
Uygulama Günlük defteri — tanıtıcı tabanlı yaklaşım
notlar.txt dosyasını fopen() ile 'w' modunda aç ve tanıtıcıyı $wr değişkenine ata. fwrite() ile 'Birinci satır' . PHP_EOL yaz, ardından fwrite() ile 'İkinci satır' . PHP_EOL yaz. fclose($wr) ile kapat. Sonra dosyayı 'r' modunda aç, tanıtıcıyı $rd değişkenine ata, fread() ile 50 byte oku, $content değişkenine ata, fclose($rd) ile kapat ve echo $content ile ekrana yaz.
Örnek çözümü göster
$wr = fopen($file, 'w'); aç. fwrite($wr, 'Birinci satır' . PHP_EOL); fwrite($wr, 'İkinci satır' . PHP_EOL); fclose($wr); yaz. Sonra $rd = fopen($file, 'r'); $content = fread($rd, 50); fclose($rd); echo $content;.
Örnek çözüm:
<?php
$file = __DIR__ . '/notlar.txt';
// Yazma modunda aç
$wr = fopen($file, 'w');
// İki satır yaz ve kapat
fwrite($wr, 'Birinci satır' . PHP_EOL);
fwrite($wr, 'İkinci satır' . PHP_EOL);
fclose($wr);
// Okuma modunda aç
$rd = fopen($file, 'r');
// 50 byte oku, kapat ve yazdır
$content = fread($rd, 50);
fclose($rd);
echo $content;
Kendini test et
-
Fonksiyonları görevleriyle eşleştir
- file_get_contents()
- Tüm dosyayı dize okur
- file_put_contents()
- Dizeyi dosyaya yazar
- fopen()
- Dosyayı belirli modda açar
- fclose()
- Tanıtıcıyı kapatır
-
Bir dosyaya önce yazıp sonra geri okumak istiyorsun. En doğru sıra nedir?
- fopen('w') → fwrite → fclose → fopen('r') → fread → fclose
- fopen('w') → fread → fclose → fopen('r') → fwrite → fclose
- fopen('r') → fwrite → fread → fclose
- fopen('a') → fwrite → fread → fclose
Cevabı göster
fopen('w') → fwrite → fclose → fopen('r') → fread → fclose — Doğru. Önce yazma modunda açıp yaz ve kapat; sonra okuma modunda açıp oku ve kapat.
Sıradaki ders: $_FILES süper globali