Własny silnik
devgine / web.
Własny silnik webowy w PHP: standardy PSR porządnie zaimplementowane od zera, ściśle typowany, przetestowany. Closed source — ta strona na nim działa.
- Rola
- Autor i maintainer
- Okres
- w toku
- Stack
-
- PHP 8.5
- PSR-7/11/15/16
- PHPStan max
- PHPUnit
- 0 Dependencies
Kontekst
Frameworki rozwiązują problemy, których wiele projektów w ogóle nie ma — i płacą za to złożonością, magią i przymusem aktualizacji. devgine/web idzie inną drogą: samodzielnie i porządnie zaimplementować standardy PSR, mieć na pokładzie wszystko, co istotne, i pozostać w pełni zrozumiałym. Kto czyta devgine, rozumie, co się dzieje — żadnej warstwy, której nikt nie potrafi wyjaśnić.
Rozwiązanie i najważniejsze punkty
-
0 zależności runtime — tylko interfejsy PSR
Kontener (PSR-11) z autowiringiem, contextual bindings i service providerami, własne komunikaty HTTP (PSR-7), middleware pipeline w modelu cebuli (PSR-15), cache PSR-16 i event dispatcher PSR-14 — wszystko własne, zero zewnętrznych paczek.
-
Routing i widoki bez magii
Nazwane trasy, parametry z ograniczeniami regex, trasy atrybutowe, route model binding. Widoki to czyste PHP z layoutami i sekcjami; komponenty łączą HTML, CSS i JS — z deduplikacją assetów.
-
Baza danych, auth i walidacja na pokładzie
QueryBuilder z prepared statements, schema builder i migracje z CLI. Session guard, remember me, ochrona CSRF, cookies HttpOnly + SameSite + Secure domyślnie. Do tego deklaratywna walidacja z czytelnymi komunikatami błędów.
-
PHPStan na poziomie max — bez baseline
Każde znalezisko jest naprawiane, nie wyciszane. Żadnego @, pustych catchy ani mixed tam, gdzie możliwy jest precyzyjny typ.
-
Testy dla każdego publicznego API
Pokrycie PHPUnit jest warunkiem merge — tak samo jak rozdział guide z działającym przykładem dla każdej funkcji. Do tego PSR-12 przez php-cs-fixer, ścisły SemVer i Conventional Commits.
-
Security by default
Auto-escaping w widokach, CSRF dla wszystkich żądań zmieniających stan, wyłącznie parametryzowany SQL, nagłówki bezpieczeństwa od pierwszego requestu, kryptografia tylko na standardowych prymitywach.
Zrzuty ekranu