Ôn tập: Xác thực đầu vào
Thuộc phần Logic và luồng chương trình trong hành trình PHP của Coddy. Bài học 58 trên 68.
Thử thách
DễBạn sẽ nhận bốn đầu vào: một chuỗi địa chỉ email, một chuỗi số điện thoại, một số biểu thị tuổi tối thiểu và một số biểu thị tuổi thực tế.
Tạo hai lớp ngoại lệ tùy chỉnh:
InvalidEmailExceptionkế thừa lớp cơ sởExceptionInvalidAgeExceptionkế thừa lớp cơ sởException
Tạo một hàm có tên validateUserData nhận bốn tham số: email, số điện thoại, tuổi tối thiểu và tuổi thực tế. Bên trong hàm này:
- Kiểm tra xem email có chứa ký hiệu
@hay không. Nếu không, hãy ném ngoại lệInvalidEmailExceptionvới thông báo"Email must contain @ symbol" - Kiểm tra xem độ dài số điện thoại có chính xác là 10 ký tự hay không. Nếu không, hãy ném ngoại lệ chung
Exceptionvới thông báo"Phone number must be 10 digits" - Kiểm tra xem tuổi thực tế có nhỏ hơn tuổi tối thiểu hay không. Nếu có, hãy ném ngoại lệ
InvalidAgeExceptionvới thông báo"User must be at least X years old"(trong đó X là giá trị tuổi tối thiểu) - Nếu tất cả các bước kiểm tra đều đạt, hãy in ra
"User data is valid"
Dùng khối try...catch...finally để gọi hàm với các đầu vào đã cho. Tạo hai khối catch riêng biệt:
- Khối
catchđầu tiên cần bắtInvalidEmailExceptionvà in ra"Email error: ", sau đó là thông báo ngoại lệ - Khối
catchthứ hai cần bắtInvalidAgeExceptionvà in ra"Age error: ", sau đó là thông báo ngoại lệ - Thêm khối
catchthứ ba để bắt mọi ngoại lệExceptionkhác và in ra"Validation error: ", sau đó là thông báo ngoại lệ
Trong khối finally, hãy in ra "Validation process completed".
Định dạng đầu vào:
- Dòng đầu tiên: Một chuỗi biểu thị địa chỉ email (ví dụ:
user@example.comhoặcinvalidemail.com) - Dòng thứ hai: Một chuỗi biểu thị số điện thoại (ví dụ:
1234567890hoặc12345) - Dòng thứ ba: Một số nguyên biểu thị yêu cầu về tuổi tối thiểu (ví dụ:
18) - Dòng thứ tư: Một số nguyên biểu thị tuổi thực tế (ví dụ:
25hoặc16)
Đầu ra mong đợi:
- Nếu tất cả dữ liệu đều hợp lệ:
User data is valid, sau đó làValidation process completedtrên dòng mới - Nếu email không hợp lệ:
Email error: Email must contain @ symbol, sau đó làValidation process completedtrên dòng mới - Nếu số điện thoại không hợp lệ:
Validation error: Phone number must be 10 digits, sau đó làValidation process completedtrên dòng mới - Nếu tuổi thấp hơn mức tối thiểu:
Age error: User must be at least X years old(trong đó X là tuổi tối thiểu), sau đó làValidation process completedtrên dòng mới
Tự làm thử
<?php
// Đọc dữ liệu đầu vào
$email = trim(fgets(STDIN));
$phone = trim(fgets(STDIN));
$minAge = intval(fgets(STDIN));
$actualAge = intval(fgets(STDIN));
// TODO: Tạo các lớp ngoại lệ tùy chỉnh tại đây
// Tạo lớp InvalidEmailException
// Tạo lớp InvalidAgeException
// TODO: Tạo hàm validateUserData tại đây
// Hàm nhận bốn tham số: email, phone, minAge, actualAge
// Viết logic kiểm tra dữ liệu trong hàm
// TODO: Dùng khối try...catch...finally để gọi hàm
// Gọi validateUserData với các giá trị đầu vào
// Thêm các khối catch cho InvalidEmailException, InvalidAgeException và Exception chung
// Thêm khối finally
?>Tất cả bài học trong Logic và luồng chương trình
1Hàm nâng cao
Hàm ẩn danhClosure và 'use'Hàm mũi tênHàm callbackDùng 'call_user_func'Hàm biếnTruyền tham chiếuHàm đệ quyÔn tập: tổng hợp về hàm4Mảng đa chiều
Tạo mảng 2 chiềuTruy cập phần tử trong mảng 2 chiềuChỉnh sửa phần tử trong mảng 2 chiềuLặp qua các vòng lặp lồng nhauMảng kết hợp 2 chiềuÔn tập: bài tập lưới đơn giản2Thao tác nâng cao với mảng
Thêm phần tử bằng 'array_push'Xóa phần tử bằng 'array_pop'Thêm phần tử vào đầu mảng bằng 'array_unshift'Xóa phần tử đầu mảng bằng 'array_shift'Gộp các mảng được đánh chỉ sốGộp các mảng kết hợpTrích xuất phần tử bằng 'array_slice'Kiểm tra giá trị bằng 'in_array'Tìm khóa bằng 'array_search'Ôn tập: bài tập về danh sách phát5Sổ điểm học sinh
Thiết lập dự án: cấu trúc dữ liệuThêm học sinh mớiThêm điểm cho học sinhTính điểm trung bình của học sinhTìm học sinh có điểm cao nhấtTạo bảng điểm8Xử lý lỗi và ngoại lệ
Hiểu về lỗi trong PHPKhối try...catchKhối finallyNém ngoại lệTạo ngoại lệ tùy chỉnhSử dụng ngoại lệ tùy chỉnhÔn tập: Xác thực đầu vào3Sắp xếp mảng
Sắp xếp mảng có chỉ số tăng dầnSắp xếp mảng có chỉ số giảm dầnSắp xếp mảng kết hợp theo giá trịSắp xếp mảng kết hợp theo khóaSắp xếp theo thứ tự tự nhiênSắp xếp tùy chỉnh bằng 'usort'Ôn tập: Sắp xếp bảng xếp hạngTự luyện tập: Trình biên dịch PHP online