# Struktura Projektu i Wytyczne do Zadań Projekt wymaga, aby każde zadanie przestrzegało określonej struktury katalogów oraz zawierało testy jednostkowe. Takie podejście zapewnia organizację i spójność pracy nad projektem. ## Struktura Katalogów Zadań - Każde zadanie powinno mieć swój własny dedykowany folder. - Folder dla zadania powinien znajdować się w ścieżce katalogu według wzorca: `tasks/task_X`, gdzie `X` to numer zadania. Przykład: dla zadania numer 1, katalog powinien być: `tasks/task_01`. ## Wymagania Zadań Każdy folder zadania powinien zawierać co najmniej dwa główne komponenty: 1. **Pliki Implementacyjne (PHP)**: Obejmuje wszystkie niezbędne pliki PHP wymagane do zaimplementowania funkcjonalności zadania. 2. **Testy Jednostkowe**: Każde zadanie powinno mieć własne testy jednostkowe weryfikujące poprawność implementacji. ## Pisanie Testów Jednostkowych - Testy jednostkowe powinny być umieszczone w podkatalogu `tests` w folderze zadania. - Użyj frameworka do testowania, takiego jak PHPUnit, do pisania testów. - Każdy plik testowy powinien być nazwany w sposób wskazujący, którą część zadania testuje, np. `Task1Test.php`. ## Uruchamianie Testów - Testy dla każdego zadania powinny być możliwe do uruchomienia z poziomu katalogu zadania, np. za pomocą komendy `phpunit tests/`. Przestrzegając tych wytycznych, praca nad każdym zadaniem będzie zorganizowana, co ułatwi zarządzanie projektami, przeglądanie kodu i współpracę. # Lista Zadań 1. **Kalkulator** - Napisz prosty kalkulator wykonujący dodawanie dwóch liczb w PHP. - Rozszerz kalkulator, aby obsługiwał odejmowanie, mnożenie i dzielenie. - Kompletne zadanie powinno obejmować pełne typowanie statyczne całego programu, obsługę błędów, możliwe operacje do wykonania powinny być w osobnym typie enum 2. **Generator liczb losowych** - Stwórz skrypt generujący określoną liczbę losowych liczb. 3. **Przelicznik temperatur** - Napisz skrypt konwertujący temperatury między stopniami Celsjusza a Fahrenheita. 4. **Prosty serwer HTTP** - Użyj PHP do stworzenia serwera, który wyświetla wiadomość powitalną. ### Operacje na Tablicach 5. **Filtrowanie danych** - Napisz funkcję filtrującą tablicę liczb, pozostawiając tylko te większe od określonej wartości. 6. **Sortowanie tablicy** - Napisz funkcję sortującą tablicę według określonego klucza. 7. **Mapowanie tablicy** - Przekształć tablicę liczb na tablicę ich kwadratów. ### Operacje na Stringach 8. **Odwracanie stringa** - Napisz funkcję, która odwraca dany string. 9. **Sprawdzanie palindromu** - Napisz funkcję sprawdzającą, czy dany string jest palindromem. 10. **Frekwencja liter** - Napisz skrypt zliczający, jak często poszczególne litery pojawiają się w danym stringu. ### Operacje na Plikach 11. **Czytanie z pliku** - Napisz skrypt, który czyta dane z pliku i wyświetla je. 12. **Zapis do pliku** - Napisz skrypt zapisujący dane wejściowe do pliku. 13. **Monitorowanie folderu** - Utwórz skrypt monitorujący zmiany w folderze i logujący te zmiany. ### Podstawy pracy z Sieciami i API 14. **Klient HTTP** - Napisz klienta HTTP w PHP, który pobiera dane z publicznego API. 15. **Prosta aplikacja CRUD** - Utwórz aplikację CRUD (Create, Read, Update, Delete) z użyciem PHP i dowolnego frameworka, np. Laravel. ### Praca z Bazami Danych 16. **Połączenie z MySQL** - Zrealizuj połączenie z bazą danych MySQL i wykonaj operację odczytu. 17. **Tworzenie API z bazą danych** - Rozbuduj aplikację CRUD, by dane były przechowywane w MySQL. 18. **Migracje bazy danych** - Napisz skrypt do zarządzania migracjami w bazie danych (tworzenie/usuwanie tabel). ### Zaawansowane Zadania 19. **Autentykacja użytkownika** - Dodaj system logowania i autentykacji użytkownika do aplikacji. 20. **Zaawansowany serwer HTTP** - Stwórz zaawansowany serwer HTTP w PHP z obsługą różnych ścieżek i parametrów zapytania.