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