Stwórz klasę `Pesel`, która będzie walidować i dekodować numer PESEL podany przez użytkownika. Założenie jest takie, że po wpisaniu przez użytkownika nr PESEL zostanie sprawdzona jego poprawność i wyświetlona informacja w formacie:
np.
Kobieta urodzona w środę 11 czerwca 1997 roku.
Do urodzin pozostało: 45 dni, 12 godzin, 30 minut, 15 sekund.
np.
Mężczyzna urodzony w piątek 13 grudnia 1970 roku.
Do urodzin pozostało: 45 dni (1080 godzin).
Numer PESEL składa się z 11 cyfr:
– Cyfry 1-2: Rok urodzenia (dwie ostatnie cyfry)
– Cyfry 3-4: Miesiąc urodzenia (z uwzględnieniem stulecia)
– Cyfry 5-6: Dzień urodzenia
– Cyfry 7-10: Numer porządkowy + płeć
– Cyfra 11: Cyfra kontrolna
Kodowanie stulecia w miesiącu:
– 1900-1999: miesiąc (01-12)
– 2000-2099: miesiąc + 20 (21-32)
– Przykład: 23 stycznia 2012 → `122123`… (12=rok, 21=styczeń XXI w., 23=dzień)
Płeć:
– Cyfra 10 (przedostatnia): parzysta = kobieta, nieparzysta = mężczyzna
Szczegóły ad tworzenia tego nr dostępne są tutaj.
Wymagania:
Ocena 2
1. Stwórz klasę `Pesel` z:
– Prywatną właściwością `$numer`
– Konstruktorem przyjmującym numer PESEL jako string
2. Stwórz metodę `walidujFormat(): bool`, która sprawdza:
– Czy podany PESEL to liczba (użyj `ctype_digit()`)
– Czy zawiera dokładnie 11 cyfr
– Zwraca `true` jeśli poprawny, `false` jeśli nie
3. Stwórz metodę `dekoduj(): array`, która zwraca tablicę:
[
'rok’ => 1997,
'miesiac’ => 6,
'dzien’ => 11,
'plec’ => 'Kobieta’
]
Ocena 3
Dodaj metody:
pobierzDate(): DateTime– zwraca obiekt DateTime z datą urodzeniawyswietlInformacje(): void– wyświetla zdekodowane dane
Utwórz instancję klasy i wywołaj stworzone metody
Ocena 4
Rozszerz metodę wyswietlInformacje() o wyświetlanie danych w formacie jak poniżej
Mężczyzna urodzony w Friday 13 December 1970 roku.
Do urodzin pozostało: 45 dni (1080 godzin).
Ocena 5
Przetłumacz dzień tygodnia na polski (użyj tablicy lub IntlDateFormatter)
Wyświetl nazwę miesiąca słownie (styczeń, luty…)
Dodaj szczegółowy licznik czasu
Kobieta urodzona w środę 11 czerwca 1997 roku.
Do urodzin pozostało: 45 dni, 12 godzin, 30 minut, 15 sekund.
Ocena 6
Dodaj walidację cyfry kontrolnej.