Özet: Girdi Doğrulama
Coddy'nin PHP Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 58 / 68.
Görev
KolayDört girdi alacaksınız: bir e-posta adresi dizesi, bir telefon numarası dizesi, bir minimum yaş sayısı ve bir gerçek yaş sayısı.
İki özel istisna sınıfı oluşturun:
- Temel
InvalidEmailExceptionsınıfını genişletenException - Temel
InvalidAgeExceptionsınıfını genişletenException
Dört parametre kabul eden validateUserData adlı bir işlev oluşturun: e-posta, telefon, minimum yaş ve gerçek yaş. Bu işlevin içinde:
- E-postanın
@simgesini içerip içermediğini kontrol edin. İçermiyorsa,InvalidEmailExceptionmesajıyla bir"Email must contain @ symbol"fırlatın - Telefon numarasının uzunluğunun tam olarak 10 karakter olup olmadığını kontrol edin. Değilse,
Exceptionmesajıyla genel bir"Phone number must be 10 digits"fırlatın - Gerçek yaşın minimum yaştan küçük olup olmadığını kontrol edin. Küçükse,
InvalidAgeExceptionmesajıyla bir"User must be at least X years old"fırlatın (burada X, minimum yaş değeridir) - Tüm doğrulamalar başarılı olursa
"User data is valid"yazdırın
İşlevi sağlanan girdilerle çağırmak için bir try...catch...finally bloğu kullanın. İki ayrı catch bloğu oluşturun:
- İlk
catchbloğuInvalidEmailExceptionyakalamalı ve istisna mesajının ardından"Email error: "yazdırmalıdır - İkinci
catchbloğuInvalidAgeExceptionyakalamalı ve istisna mesajının ardından"Age error: "yazdırmalıdır - Başka herhangi bir
catchyakalayan ve istisna mesajının ardındanExceptionyazdıran üçüncü bir"Validation error: "bloğu ekleyin
finally bloğunda "Validation process completed" yazdırın.
Girdi biçimi:
- İlk satır: E-posta adresini temsil eden bir dize (örnek:
user@example.comveyainvalidemail.com) - İkinci satır: Telefon numarasını temsil eden bir dize (örnek:
1234567890veya12345) - Üçüncü satır: Minimum yaş gereksinimini temsil eden bir tam sayı (örnek:
18) - Dördüncü satır: Gerçek yaşı temsil eden bir tam sayı (örnek:
25veya16)
Beklenen çıktı:
- Tüm veriler geçerliyse: Yeni bir satırda
User data is validifadesinin ardındanValidation process completed - E-posta geçersizse: Yeni bir satırda
Email error: Email must contain @ symbolifadesinin ardındanValidation process completed - Telefon numarası geçersizse: Yeni bir satırda
Validation error: Phone number must be 10 digitsifadesinin ardındanValidation process completed - Yaş minimumun altındaysa: Yeni bir satırda
Age error: User must be at least X years oldifadesinin ardındanValidation process completed(burada X, minimum yaştır)
Kendin dene
<?php
// Girdileri oku
$email = trim(fgets(STDIN));
$phone = trim(fgets(STDIN));
$minAge = intval(fgets(STDIN));
$actualAge = intval(fgets(STDIN));
// TODO: Burada özel istisna sınıfları oluşturun
// InvalidEmailException sınıfını oluşturun
// InvalidAgeException sınıfını oluşturun
// TODO: Burada validateUserData fonksiyonunu oluşturun
// Fonksiyon dört parametre kabul etmelidir: email, phone, minAge, actualAge
// Fonksiyon içinde doğrulama mantığını uygulayın
// TODO: Fonksiyonu çağırmak için try...catch...finally bloğunu kullanın
// Girdi değerleriyle validateUserData fonksiyonunu çağırın
// InvalidEmailException, InvalidAgeException ve genel Exception için catch blokları ekleyin
// finally bloğunu ekleyin
?>Mantık ve Akış bölümündeki tüm dersler
1İleri Seviye Fonksiyonlar
Anonim FonksiyonlarClosure'lar ve 'use'Ok Fonksiyonları (Arrow Functions)Geri Çağırma (Callback) Fonksiyonları'call_user_func' KullanımıDeğişken FonksiyonlarReferans ile Değer AktarımıÖz Yinelemeli (Recursive) FonksiyonlarÖzet: Fonksiyon Karması4Çok Boyutlu Diziler
2 Boyutlu Dizi Oluşturma2 Boyutlu Dizi Elemanlarına Erişme2 Boyutlu Dizi Elemanlarını Değiştirmeİç İçe Döngülerle Yineleme2 Boyutlu İlişkisel DizilerÖzet: Basit Izgara Egzersizi2İleri Düzey Dizi İşlemleri
'array_push' ile Ekleme'array_pop' ile Silme'array_unshift' ile Ekleme'array_shift' ile Silmeİndisli Dizileri Birleştirmeİlişkisel Dizileri Birleştirme'array_slice' ile Kesit Alma'in_array' ile Değer Kontrolü'array_search' ile Anahtar AramaÖzet: Çalma Listesi Alıştırması5Öğrenci Not Defteri
Proje Kurulumu: Veri YapısıYeni Öğrenci EklemeÖğrenciye Not EklemeÖğrenci Ortalamasını HesaplamaEn Başarılı Öğrenciyi BulmaKarne Oluşturma8Hata ve İstisna Yönetimi
PHP Hatalarını Anlamak'try...catch' Bloğu'finally' BloğuBir İstisna FırlatmakÖzel Bir İstisna OluşturmaÖzel Bir İstisna KullanmaÖzet: Girdi Doğrulama3Dizileri Sıralama
İndisli Dizileri Artan Sırada Sıralamaİndisli Dizileri Azalan Sırada Sıralamaİlişkisel Dizileri Değere Göre Sıralamaİlişkisel Dizileri Anahtara Göre SıralamaDoğal Sıralama (Natural Order)'usort' ile Özel SıralamaÖzet: Liderlik Tablosu SıralamaKendi başına pratik yap: Online PHP derleyicisi