CodeBlanks Logo Icon CodeBlanks

Özet - Dosya işlemleri

PHP kursu · Orta seviye · Ders 75/115

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:

  1. fopen() ile uygun modda aç ('r', 'w', 'a').
  2. fwrite() ile yaz ya da fread() ile oku.
  3. Gerekirse farklı modda yeniden aç.
  4. 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

  1. 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
  2. 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.

Orta seviye bölümündeki tüm dersler