This commit is contained in:
Adrian Borkiet
2024-06-25 10:36:35 +02:00
commit a196e7a10a
9 changed files with 2062 additions and 0 deletions
+99
View File
@@ -0,0 +1,99 @@
# 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.
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.
+43
View File
@@ -0,0 +1,43 @@
# Projekt Kalkulator PHP
## Opis
Projekt Kalkulatora PHP to prosta aplikacja konsolowa napisana w PHP, która pozwala na wykonanie podstawowych operacji matematycznych takich jak dodawanie. Projekt został skonfigurowany do uruchamiania w środowisku Docker, co ułatwia zarządzanie zależnościami i zapewnia spójne środowisko uruchomieniowe.
## Wymagania
- Docker
- Docker Compose
## Uruchamianie aplikacji
Aby uruchomić aplikację, skorzystaj z poniższych kroków:
1. Zbuduj obraz Docker:
```bash
docker compose build
```
2. Uruchom aplikację z przekazaniem dwóch liczb jako argumentów:
```bash
docker compose run app php index.php 2 3
```
Powyższe polecenie wykona operację dodawania na liczbach 2 i 3.
## Uruchamianie testów
Aby uruchomić testy jednostkowe, użyj poniższego polecenia:
```bash
docker compose run app php ./vendor/bin/phpunit tests/
```
## Sprawdzenie PHPCS
By sprawdzić, czy kod jest poprawny względem phpcs należy uruchomić:
```
docker compose run app vendor/bin/phpcs --standard=PSR12 src
```
+11
View File
@@ -0,0 +1,11 @@
{
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"require-dev": {
"phpunit/phpunit": "^9",
"squizlabs/php_codesniffer": "^3.9"
}
}
+1840
View File
File diff suppressed because it is too large Load Diff
+7
View File
@@ -0,0 +1,7 @@
version: '3.8'
services:
app:
build:
context: .
dockerfile: docker/Dockerfile
command: php index.php
+16
View File
@@ -0,0 +1,16 @@
FROM php:8.3-cli
RUN apt-get update && apt-get install -y unzip
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer
WORKDIR /usr/src/myapp
COPY composer.json composer.lock* /usr/src/myapp/
ENV COMPOSER_ALLOW_SUPERUSER=1
RUN composer install --no-scripts --no-autoloader --dev
COPY . /usr/src/myapp
RUN composer dump-autoload --optimize
CMD ["php", "index.php"]
+17
View File
@@ -0,0 +1,17 @@
<?php
require_once 'vendor/autoload.php';
// Sprawdzenie, czy argumenty zostały podane
if ($argc < 3) {
echo "Usage: php index.php <number1> <number2>\n";
exit(1);
}
$number1 = $argv[1];
$number2 = $argv[2];
$calculator = new App\Calculator();
$result = $calculator->add($number1, $number2);
echo "Result: " . $result . "\n";
+11
View File
@@ -0,0 +1,11 @@
<?php
namespace App;
class Calculator
{
public function add($a, $b)
{
return $a + $b;
}
}
+18
View File
@@ -0,0 +1,18 @@
<?php
use PHPUnit\Framework\TestCase;
require_once 'vendor/autoload.php';
class CalculatorTest extends TestCase {
private $calculator;
protected function setUp(): void {
$this->calculator = new App\Calculator();
}
public function testAdd() {
$this->assertEquals(4, $this->calculator->add(2, 2));
$this->assertEquals(0, $this->calculator->add(-1, 1));
}
}