Menu
Coddy logo textTech

Tekrar - Form Doğrulayıcı

Coddy'nin PHP Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 69 / 91.

challenge icon

Görev

Kolay

İlk sorunda durmak yerine doğrulama hatalarını toplayıp hepsini aynı anda bildiren bir kullanıcı kayıt formu doğrulayıcısı oluşturalım. Gerçek dünyadaki form doğrulama işlemi bu şekilde çalışır: kullanıcılar gönderimlerindeki tüm sorunları görmek, bunları tek tek düzeltmek zorunda kalmamak ister.

Kodunuzu dört dosyaya ayıracaksınız:

  • ValidationException.php: ValidationException sınıfını genişleten temel bir Exception sınıfı oluşturun. Bu sınıf, doğrulamayla ilgili tüm istisnaların üst sınıfı olarak görev yapar.
  • Exceptions.php: ValidationException dosyasını dahil edin ve ValidationException sınıfını genişleten üç özel istisna sınıfı oluşturun:
    • RequiredFieldException: Yapıcısında bir alan adı kabul eder ve "[fieldName] is required" mesajını üst sınıfa iletir
    • InvalidEmailException: Yapıcısında bir e-posta dizesi kabul eder ve "'[email]' is not a valid email" mesajını üst sınıfa iletir
    • MinLengthException: Yapıcısında bir alan adı ve minimum uzunluk (int) kabul eder ve "[fieldName] must be at least [minLength] characters" mesajını üst sınıfa iletir
  • FormValidator.php: Exceptions dosyasını dahil edin ve aşağıdaki doğrulama metotlarına sahip bir FormValidator sınıfı oluşturun:
    • validateRequired(?string $value, string $fieldName): string: Değer null veya boşsa (trim işleminden sonra) RequiredFieldException fırlatır; aksi takdirde trim uygulanmış değeri döndürür
    • validateEmail(string $email): string: E-posta geçersizse (InvalidEmailException ile filter_var kullanın) FILTER_VALIDATE_EMAIL fırlatır; aksi takdirde e-postayı döndürür
    • validateMinLength(string $value, string $fieldName, int $minLength): string: Dize uzunluğu minimumdan kısaysa MinLengthException fırlatır; aksi takdirde değeri döndürür
  • main.php: FormValidator dosyasını dahil edin. Üç girdi alacaksınız: kullanıcı adı, e-posta ve parola.

    Bir FormValidator ve hata mesajlarını toplamak için boş bir dizi oluşturun. Her alanı ayrı bir try-catch bloğunda doğrulayın:

    • Kullanıcı adını gerekli alan olarak doğrulayın
    • Önce e-postayı gerekli alan olarak doğrulayın, ardından geçerli bir e-posta biçiminde olup olmadığını doğrulayın
    • Önce parolayı gerekli alan olarak doğrulayın, ardından minimum 8 karakter uzunluğuna sahip olduğunu doğrulayın

    Bir ValidationException yakalandığında, yürütmeyi durdurmak yerine mesajını hata dizinize ekleyin.

    Tüm doğrulamalardan sonra hata varsa her hata mesajını kendi satırına yazdırın. Hata yoksa "Registration successful" yazdırın.

Tüm hataları bildirmeden önce toplama yaklaşımı, iyi bir kullanıcı deneyimi için gereklidir. İstisna hiyerarşiniz, farklı doğrulama hataları için özel istisna türlerine sahip olmaya devam ederken tüm doğrulama sorunlarını tek bir catch bloğuyla yakalamanızı kolaylaştırır.

Kendin dene

<?php
require_once 'FormValidator.php';

// Girdileri oku
$username = trim(fgets(STDIN));
$email = trim(fgets(STDIN));
$password = trim(fgets(STDIN));

// Bir FormValidator örneği oluştur
$validator = new FormValidator();

// Hata mesajlarını toplamak için boş bir dizi oluştur
$errors = [];

// TODO: Kullanıcı adını try-catch bloğunda zorunlu olarak doğrula
// ValidationException yakala ve mesajını $errors dizisine ekle

// TODO: E-postayı önce zorunlu olarak doğrula, sonra geçerli bir e-posta formatı olarak doğrula
// Bir try-catch bloğu kullan ve herhangi bir hata mesajını $errors dizisine ekle

// TODO: Parolayı önce zorunlu olarak doğrula, sonra minimum 8 karakter uzunluğunu doğrula
// Bir try-catch bloğu kullan ve herhangi bir hata mesajını $errors dizisine ekle

// TODO: Tüm doğrulamalardan sonra:
// - Hatalar varsa, her hata mesajını kendi satırına yazdır
// - If there are no errors, print "Registration successful"

?>

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online PHP derleyicisi