init
This commit is contained in:
@@ -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.
|
||||||
@@ -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
|
||||||
|
```
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"App\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^9",
|
||||||
|
"squizlabs/php_codesniffer": "^3.9"
|
||||||
|
}
|
||||||
|
}
|
||||||
Generated
+1840
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,7 @@
|
|||||||
|
version: '3.8'
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: docker/Dockerfile
|
||||||
|
command: php index.php
|
||||||
@@ -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"]
|
||||||
@@ -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";
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App;
|
||||||
|
|
||||||
|
class Calculator
|
||||||
|
{
|
||||||
|
public function add($a, $b)
|
||||||
|
{
|
||||||
|
return $a + $b;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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));
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user