⚡ AutoSnippets PRO EN

PHP: Produkcyjne Snippet'y Kodu

Produkcyjne wzorce PHP: routing, PDO, RBAC, kolejki zadań, podpisy cyfrowe.

Python JavaScript TypeScript Java C# C++ Go PHP Rust SQL

Na tej stronie:

36. PHP: Nowoczesny Router HTTP (OOP)

PHP

Dopasowywanie adresów URL do kontrolerów z parametrami.

class Router {
    private array $routes = [];

    public function add(string $method, string $path, callable $handler): void {
        $this->routes[$method][$path] = $handler;
    }

    public function dispatch(string $method, string $uri): mixed {
        return $this->routes[$method][$uri]() ?? http_response_code(404);
    }
}

Kiedy używać

Podstawa własnego mikroframeworka albo prostego API bez zależności od Laravela czy Symfony.

Typowe pułapki

Ten prosty router nie obsługuje parametrów w ścieżce (np. /users/{id}) — do tego potrzebna jest dodatkowa logika dopasowywania wzorców.

37. PHP: PDO z Transakcjami

PHP

Bezpieczne zapytania przygotowane odporne na SQL Injection.

function transferFunds(PDO $pdo, int $from, int $to, float $amount): void {
    try {
        $pdo->beginTransaction();
        // Operacje SQL...
        $pdo->commit();
    } catch (Exception $e) {
        $pdo->rollBack();
        throw $e;
    }
}

Kiedy używać

Niezbędne przy operacjach, które muszą się powieść razem albo wcale — np. przelew środków między dwoma kontami.

Typowe pułapki

Domyślnie PDO nie rzuca wyjątków przy błędach SQL, chyba że ustawisz PDO::ATTR_ERRMODE na PDO::ERRMODE_EXCEPTION — bez tego rollback może nigdy się nie wykonać.

38. PHP: System RBAC (Role-Based Access)

PHP

Sprawdzanie uprawnień użytkowników względem zasobów.

class RBAC {
    private array $roles = ['admin' => ['delete', 'write', 'read'], 'user' => ['read']];

    public function hasPermission(string $role, string $permission): bool {
        return in_array($permission, $this->roles[$role] ?? []);
    }
}

Kiedy używać

Podstawowy mechanizm kontroli dostępu — sprawdzanie, czy dana rola użytkownika ma prawo wykonać daną akcję.

Typowe pułapki

Trzymanie ról i uprawnień na sztywno w kodzie utrudnia zarządzanie nimi w większej aplikacji — docelowo warto przenieść to do bazy danych.

39. PHP: Kolejka Zadań w Tle (CLI)

PHP

Parser i dispatcher zadań asynchronicznych obsługiwany przez konsolę.

class TaskDispatcher {
    public function dispatch(string $jobClass, array $data): void {
        $payload = json_encode(['job' => $jobClass, 'data' => $data]);
        file_put_contents(__DIR__ . '/queue.log', $payload . PHP_EOL, FILE_APPEND);
    }
}

Kiedy używać

Przydatne do odkładania czasochłonnych operacji (wysyłka maili, generowanie raportów) poza główne żądanie HTTP.

Typowe pułapki

Zapis do pliku jako kolejka nie skaluje się przy wielu równoległych procesach — w produkcji lepiej sprawdza się prawdziwy broker (Redis, RabbitMQ).

40. PHP: Podpisy Cyfrowe OpenSSL

PHP

Kryptograficzne zabezpieczanie danych przesyłanych między systemami.

function signData(string $data, string $privateKey): string {
    openssl_sign($data, $signature, $privateKey, OPENSSL_ALGO_SHA256);
    return base64_encode($signature);
}

Kiedy używać

Stosuj przy podpisywaniu danych przesyłanych między systemami, żeby odbiorca mógł zweryfikować ich autentyczność.

Typowe pułapki

Klucz prywatny użyty do podpisu musi być bezwzględnie chroniony — jego wyciek pozwala każdemu podszyć się pod Twój system.