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.
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.
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.
$content = DLEFiles::Read( "test.txt" );
if($content !== false) {
echo "Dosya içeriği: " . $content;
}
$data = "Merhaba Dünya";
$result = DLEFiles::Save( "logs/log_1.txt", $data );
if($result) {
echo "Başarıyla kaydedildi!";
}
DLEFiles::Delete( "tmp/temp_file.jpg" );
if( DLEFiles::FileExists("logo.png") ) {
// İşlem yap
}
$bytes = DLEFiles::Size("data.zip");
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)
";
}
DLEFiles otomatik olarak normalize_path() fonksiyonunu kullanır. Ancak yine de şu kurallara dikkat etmelisiniz:
uploads/ klasörüne göre görelidir.../../etc/passwd) otomatik olarak engellenir.totranslit() kullanın).
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.