DLEFiles API: Modern Dosya Yönetimi

Dosyaları Her Yere Kaydedin

DLE 19.0 ile gelen DLEFiles sınıfı, Flysystem kütüphanesini temel alır. Bu API sayesinde yazdığınız bir eklenti, dosyanın yerel diskte mi, FTP'de mi yoksa Amazon S3'te mi olduğunu düşünmeden işlem yapabilir.

1. Neden DLEFiles?

Eskiden file_put_contents veya unlink kullanırken dosya yolunu tam olarak bilmeniz gerekiyordu. DLEFiles ile DLE'nin ayarlarındaki depolama sürücüsü (Local, FTP, S3 vb.) neyse, eklentiniz otomatik olarak ona uyum sağlar.


2. Temel Fonksiyonlar

Sınıfı kullanmadan önce init etmenize gerek yoktur, DLE bunu otomatik yapar. Ancak özel bir root klasör kullanmak isterseniz DLEFiles::init() çağrılabilir.

Dosya Okuma (Read)

$content = DLEFiles::Read( "test.txt" );
if($content !== false) {
    echo "Dosya içeriği: " . $content;
}

Dosya Yazma / Kaydetme (Save)

$data = "Merhaba Dünya";
$result = DLEFiles::Save( "logs/log_1.txt", $data );

if($result) {
    echo "Başarıyla kaydedildi!";
}

Dosya Silme (Delete)

DLEFiles::Delete( "tmp/temp_file.jpg" );

3. İleri Seviye İşlemler

Varlık Kontrolü
if( DLEFiles::FileExists("logo.png") ) {
    // İşlem yap
}
Dosya Boyutu
$bytes = DLEFiles::Size("data.zip");

Klasör Listeleme (ListDirectory)

Belirli bir klasördeki dosyaları ve alt klasörleri profesyonel bir dizi olarak döner.

$list = DLEFiles::ListDirectory( "photos", ["jpg", "png"] );

foreach($list['files'] as $file) {
    echo "Dosya: " . $file['name'] . " (" . $file['size'] . " bytes)
"; }

4. Güvenlik ve Yol (Path) Yönetimi

DLEFiles otomatik olarak normalize_path() fonksiyonunu kullanır. Ancak yine de şu kurallara dikkat etmelisiniz:

  • Dosya yolları her zaman uploads/ klasörüne göre görelidir.
  • Sistem dışı klasörlere erişim (örn: ../../etc/passwd) otomatik olarak engellenir.
  • Dosya isimlerinde Türkçe karakter veya boşluk kullanmamaya özen gösterin (totranslit() kullanın).

Bulut Hazır Eklentiler!

Eğer eklentinizde resim veya dosya yükleme işlemi varsa, doğrudan PHP'nin move_uploaded_file fonksiyonunu kullanmak yerine DLEFiles::WriteStream() kullanmaya başlayın. Böylece eklentiniz Amazon S3 ve benzeri servislerde hatasız çalışacaktır.