MySQL ve Access veritabanları giderek daha fazlapaylaşılan depolama ortamı. Ancak 1990'lı yılların başında PHP'de dosyalarla çalışmak popülerdi ve kayıtları CSV biçiminde yeni satırlarla ayırarak kaydedildi.
İşin temel ilkeleri
Veritabanları kullanışlıdır, ancak her geliştiricien azından dosyaların nasıl okunacağı ve yazılacağı konusunda bazı temel bilgilere sahip olun. Belki birçok kişi şu soru hakkında düşünecektir: "Bunu neden bilmem gerekiyor? Dosyaları kullanırsam, XML olarak yazılır ve yalnızca ayrıştırıcıyı kullanırım. "
İşte dosyalara ihtiyaç duymanızın birkaç nedeni:
- İkili verileri (görüntü dosyaları gibi) bir BLOB (İkili Büyük Nesne) veritabanına taşımak için.
- Eski bir veritabanı veya uygulamadan dışa aktarılan verileri (e-posta adresleri gibi) içe aktarın.
- Bilgileri veritabanından çevrimdışı işleme için bir metin dosyasına aktarmak için.
Dosyaları okumak ve yazmak temel işlemlerdir.Bir belgeyi okumanız gerekiyorsa, önce açmanız gerekir. Bundan sonra, içeriği olabildiğince fazla okumalı ve ardından dosyayı kapatmalısınız. Bir belgeye bilgi yazmak için önce onu açmanız (veya belki de henüz yaratılmadıysa oluşturmanız gerekir). Bundan sonra gerekli verileri yazın ve bittiğinde kapatın.
Otomatik olarak açılıp kapanan yerleşik işlevleri kullanmak da uygundur. PHP5'te mevcuttur ve ayrıca dosya özniteliklerine, yani özelliklerine aşina olmalısınız.
Şunları söyleyebilirler:
- boyut hakkında;
- En son ne zaman iletişime geçildiği hakkında bilgi vermek;
- sahibi vb. hakkında bilgi verin
PHP'deki dosyalarla çalışmak için tüm temel öznitelikleri öğrenmek en iyisidir. Bu, işi büyük ölçüde kolaylaştıracaktır.
Dosya Geçmişi
Dosyanın en son ne zaman düzenlendiğini bilmeniz gerekebilir. Bu durumda, aşağıdaki işlevler kurtarmaya gelir: fileatime (), filemtime () ve filectime ().
<?php $ formatDate = "D d M Y g: i A"; $ zamanA = dosya zamanı ($ dosya); $ timeM = dosya zamanı ($ dosya); $ timeC = dosya zamanı ($ dosya); echo $ dosya. "görüntülendi". tarih ($ formatDate, $ zamanA). ". <br>"; echo $ dosya. "son i-düğüm değişikliğine sahipti". tarih ($ formatDate, $ timeM). ". <br>"; echo $ dosya. " değişti " . tarih ($ formatDate, $ timeC). ".";
İşte kod, son erişim zaman damgasını alır ve onu görüntüler:
- C: Windowsfile.ini 19 Eylül 2018 16:34 tarihinde görüntülendi.
- C: Windowsfile.ini, Cum 8 Ekim 2018 2:03 tarihinde değiştirildi.
- C: Windowsfil.ini 16 Aralık 2017 Sal, 04:34 tarihinde değiştirildi.
Filectime () işlevi, dosyayla ilişkili çeşitli bilgilerin (örneğin erişim hakları) değişim zamanını gösterir ve filemtime () dosyanın kendisindeki değişikliği gösterir.
Date () işlevi, dosya * time () işlevleri tarafından döndürülen Unix zaman damgasını biçimlendirmek için kullanıldı.
Dosya mı değil mi?
PHP'nin gerçekten dosyalarla çalışıp çalışmadığını öğrenmek için is_file () işlevini veya is_dir () işlevini kullanarak bir dizin olup olmadığını kontrol edebilirsiniz.
<? php echo $ dosya. (is_file ($ dosya)? "": "değil"). "dosya. <br>"; echo $ dosya. (is_dir ($ dosya)? "": "değil"). "dizin.";
Örnek kod çıktısı:
- C: Windowsfile.ini dosyası.
- C: Windowsfile.ini bir dizin değil.
Böylelikle hataları önleyebilir ve "dosya değil" i dikkatsizlik ile açamazsınız. PHP'de dosyalar ve dizinlerle çalışmak benzerdir.
Dosya izinleri
Bir dosya üzerinde çalışmadan önce, okunabilir mi yoksa yazılabilir mi olduğunu kontrol edebilirsiniz. Bunu yapmak için is_writable () ve is_readable () işlevlerini kullanmanız gerekir.
<? php echo $ dosya. (is_readable ($ dosya)? "": "değil"). "oku. <br>"; echo $ dosya. (is_writable ($ dosya)? "": "değil"). "yazılıyor.";
Bu işlevler bir boole değeri döndürür ve işlemin dosya üzerinde gerçekleştirilip gerçekleştirilemeyeceğini açıklar.
Kod, aşağıdaki değerleri ekrana yazdıracaktır:
- C: Windowsfile.ini okunuyor.
- C: Windowsfile.ini yazılmıyor.
Üçlü operatörü kullanarak, bir dosyanın mevcut olup olmadığını belirtebilirsiniz.
Dosya boyutu
Bir dosyanın boyutunu bulmak için dosya boyutu () işlevini kullanın. Bayt olarak gösterilecektir.
<? php $ dosya = "C: Windowsfile.ini"; $ boyut = dosya boyutu ($ dosya); echo $ dosya. "boyutu var". $ boyut. "bayt.";
Fonksiyon aşağıdakileri gösterecektir:
- C: Windowsfile.ini 510 bayt boyutundadır.
Dosyayı Windows sisteminde kullanmak buradabir nüansı vurgular. Ters eğik çizgi, bir çıkış karakteri olarak özel bir anlama sahiptir. Başka bir ters eğik çizgi ekleyerek bundan kaçınmanız gerekecektir.
Dosya henüz yaratılmadıysa, dosya boyutu () işlevi Yanlış ve bir hata belirtecektir. Bu nedenle, önce dosyanın gerekli file_exists () komutunun varlığı kontrol edilir.
<? php $ dosya = "C: Windowsfile.ini"; if (dosya_var ($ dosya)) {$ boyut = dosya boyutu ($ dosya); echo $ dosya. "boyutu var". $ boyut. "bayt.";} else {echo $ dosya. " Dosya bulunamadı.";}
File_exists () denetimi neredeyse her zaman güvenlik için dahil edilmelidir.
Dosyaları okumak
Önceki bölüm, ne kadar yapabileceğinizi gösterir.Okumadan veya onlara yazmadan önce üzerinde çalıştığınız dosyalar hakkında bilgi edinin. Artık dosyanın içeriğinin nasıl okunduğunu ayrıştırabilirsiniz.
PHP dosyalarıyla çalışmaya yönelik işlevler, görevi kolaylaştırır.Bu durumda file_get_contents () gerekir. Dosyanın kendisini açıp kapatmak zorunda kalmadan dosyanın tüm içeriğini bir değişkene okur. Bu, kayıt hacmi nispeten küçük olduğunda kullanışlıdır, çünkü PHP'de 1 GB veriyi arşive hemen okumak her zaman mantıklı değildir. ".İni" dosyalarıyla çalışma ve file_get_contents () işlevi aşağıda gösterilmektedir.
<? php $ file = "c: windowsfile.ini"; $ dosya1 = file_get_contents ($ dosya); echo $ dosya1;
Büyük dosyalar için veya sadece şuna bağlı olaraksenaryonuzun ihtiyaçları varsa, ayrıntıları kendiniz ele almak daha akıllıca olabilir. Bunun nedeni, dosya açıldıktan sonra içinde belirli bir notu arayabilmeniz ve istediğiniz kadar veri okuyabilmenizdir. Fopen () işlevi bir dosyayı açmak için kullanılır.
<? php $ file = "c: windowsfile.ini"; $ dosya1 = fopen ($ dosya, "r");
Fopen () işlevi iki bağımsız değişken gerektirir:
- açılacak dosya;
- bu durumda kullanılan mod, okumak için "r" dir.
İşlev, $ file1 değişkeninde saklanan dosyaya bir tutamaç veya akış döndürür. Dosyayla çalışırken sonraki tüm komutlarda kullanılmalıdır.
rejim | değer | İmleç konumu | Dosya yoksa? |
R, | sadece okumak | dosyanın başlangıcı | bir hata verecek |
w | sadece kayıt | dosyanın başlangıcı | yeni bir tane yaratacak |
ve | sadece kayıt | dosyanın sonu | yeni bir tane yaratacak |
Fgets () işlevi, açık bir dosyadan her seferinde bir satır okumak için kullanılabilir.
<? php $ file = "c: windowsfile.ini"; $ dosya1 = fopen ($ dosya, "r"); {echo fgets ($ dosya1) yapın. "<br>";} while (! feof ($ dosya1)); fclose ($ dosya1);
Do-while döngüsü kullanmak iyidirdosyada kaç satır olduğunu önceden bilmek için seçim. Feof () işlevi, dosyanın tamamlanıp tamamlanmadığını kontrol eder ve döngü, dosya koşulunun sonuna ulaşılana kadar devam eder. Okuma bittikten sonra, belgeyi kapatmak için fclose () işlevi kullanılır.
Dosya kaydı
Bir dosyaya yazarken yaygın olarak kullanılan iki modfwrite () işlevini kullanarak: "w" ve "a". "W", belgeye yazmanız gerektiği anlamına gelir, ancak önce herhangi bir içeriği silecektir, "a" - dosyada zaten var olanlara yeni veriler ekleyecektir. Doğru seçeneği kullandığınızdan emin olun.
Aşağıdaki örnek kayıt için "a" modunu kullanacaktır.
<? php $ myFile = "files.txt"; $ dosya1 = fopen ($ dosyam, "a"); $ output = "muz". PHP_EOL; fwrite ($ dosya1, $ çıktı); $ output = "Çin". PHP_EOL; fwrite ($ dosya1, $ çıktı); fclose ($ dosya1);
Önce dosya adı bir değişkene atanır, ardındaneklemek için "a" modunda açılır. Yazılacak veriler $ output ve fwrite () değişkenine atanır ve bilgi dosyaya eklenir. İşlem başka bir satır eklemek için tekrarlanır, ardından belge fclose () kullanılarak kapatılır.
Önceden tanımlanmış sabit PHP_EOL, PHP'nin metin dosyalarıyla çalıştığı platforma özgü bir satırsonu karakteri ekler.
Yukarıdaki kodu çalıştırdıktan sonra dosyanın içeriği şu şekilde görünmelidir:
- muz;
- Çin.
File_put_contents () işlevi ayrıcadosyaya yaz. Bir dosya adını, yazılacak veriyi ve veri eklemesi gerekiyorsa FILE_APPEND sabitini alır (varsayılan dosya içeriğinin üzerine yazacaktır).
İşte yukarıdakiyle aynı örnek, ancak bu sefer file_put_contents () kullanılıyor.
<? php $ myFile = "files.txt"; file_put_contents ($ myFile, "muz". PHP_EOL); file_put_contents ($ myFile, "Çin". PHP_EOL, FILE_APPEND);
Bu işlevlerle sık sık çalışmanız gerekir, bu yüzden onları hatırlamak en iyisidir. Ek olarak, bir gün PHP dosyalarıyla çalışırken bazı karmaşık görevleri kolaylaştırabilirler.