Ö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 (exception) sınıfı oluşturun:
- Temel
Exceptionsınıfını genişletenInvalidEmailException - Temel
Exceptionsınıfını genişletenInvalidAgeException
E-posta, telefon, minimum yaş ve gerçek yaş olmak üzere dört parametre kabul eden validateUserData adında bir fonksiyon oluşturun. Bu fonksiyonun içinde:
- E-postanın
@sembolü içerip içermediğini kontrol edin. İçermiyorsa,"Email must contain @ symbol"mesajıyla birlikte birInvalidEmailExceptionfırlatın. - Telefon numarası uzunluğunun tam olarak 10 karakter olup olmadığını kontrol edin. Değilse,
"Phone number must be 10 digits"mesajıyla birlikte genel birExceptionfırlatın. - Gerçek yaşın minimum yaştan küçük olup olmadığını kontrol edin. Küçükse,
"User must be at least X years old"(burada X minimum yaş değeridir) mesajıyla birlikte birInvalidAgeExceptionfırlatın. - Tüm doğrulamalar geçerse,
"User data is valid"yazdırın.
Fonksiyonu sağlanan girdilerle çağırmak için bir try...catch...finally bloğu kullanın. İki ayrı catch bloğu oluşturun:
- İlk
catchbloğuInvalidEmailExceptionistisnasını yakalamalı ve"Email error: "ardından istisna mesajını yazdırmalıdır. - İkinci
catchbloğuInvalidAgeExceptionistisnasını yakalamalı ve"Age error: "ardından istisna mesajını yazdırmalıdır. - Diğer tüm
Exceptiontürlerini yakalayan ve"Validation error: "ardından istisna mesajını yazdıran üçüncü bircatchbloğu ekleyin.
finally bloğunda, "Validation process completed" yazdırın.
Girdi formatı:
- Birinci 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:
User data is validve ardından yeni bir satırdaValidation process completed - E-posta geçersizse:
Email error: Email must contain @ symbolve ardından yeni bir satırdaValidation process completed - Telefon numarası geçersizse:
Validation error: Phone number must be 10 digitsve ardından yeni bir satırdaValidation process completed - Yaş minimumun altındaysa:
Age error: User must be at least X years old(burada X minimum yaştır) ve ardından yeni bir satırdaValidation process completed
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ıralama