Home

Het Multiminded Framework
in de schijnwerpers

Een eigen PHP 8.4 framework, opvolger van de gegroeide library/. Expliciet, immutable, testbaar — geen god-objects, geen magic.

187src/-bestanden
84test-bestanden
0legacy/-bestanden (read-only)
PHP 8.4minimum runtime

Onderdelen van het framework

Html\El

Stabiel

Fluent, chainable HTML-builder met classList, style, DOM-traversal. Escaping ingebakken.

Regex-router met ServerRequest. Kernel met DI-container, virtual readonly properties.

FormFactory + Validators + Conditional. Nieuw: DateField/DateRangeField met i18n-driven calendar.

CRUD voor "normale" tabellen + fluent Query (where/in/like/null/between, nest/unnest, paginate). Events via PSR-14.

Immutable fluent reader voor DynamicItems via metadata.cache.values.{lang}.* — geen EAV-joins.

CRUD voor DynamicItems: create/update/setActive/delete + auto cache-warm. Cascading delete via parent_id.

Drie EAV-strategieën (Subselect / LeftJoin / Pivot) voor benchen tegen het cache-pad.

Pure cache-logica. Skip-list (PASSWORD/USER/FILE/DYNAMIC_FORM/encrypted). Herbruikbaar buiten dit project.

Types-registry, file-cached, inheritance via metadata.extends.

Drie heldere lagen — Request beschrijft, Transport voert uit, Response komt terug. CachingTransport als decorator.

attach.js (positioner), custom-select.js (select-vervanger), date-picker.js (calendar), i18n.js (nl/en/de/fr).

Dev-tools

  • public/scratch.php — open in PHPStorm, schrijf code, refresh in browser
  • ./bin/repl — PsySH-shell met framework gebooted; $pdo, $kernel klaar
  • /bench.php — vergelijk cache vs. EAV-strategieën op live MariaDB
  • /reference — Reflection-driven API-overzicht (auto-update bij elke nieuwe class)

Hoe het werkt

  1. bootstrap.php doet Composer-autoload + boot Framework\App\Kernel
  2. public/index.php registreert routes op $kernel->router
  3. De Router matcht de URI op een patroon en roept de bijbehorende callable
  4. De callable bouwt HTML via Html\El en geeft een string terug
  5. Layout wikkelt de content in de volledige HTML-pagina