Tech stack & dependencies
De Atraxion-webshop draait op PHP 8.2 (composer.json:7) en is een custom MVC-monoliet zonder extern applicatieframework als kern. De meeste pagina-routing en AJAX-verwerking is eigengebouwde code; Slim 4 wordt als PSR-15-dispatcher ingezet voor de storefront (_core/config/router.php), de externe API (_api/) en het admin control panel (_cp/). De legacy backoffice (_admin/) gebruikt géén Slim.
PHP en vereiste extensies
| Extensie |
Gebruik |
ext-dom |
XML/HTML-parsing (feeds, EDI) |
ext-fileinfo |
MIME-detectie bij bestandsuploads |
ext-ftp |
Leverancierfeeds ophalen via FTP |
ext-gd |
Beeldmanipulatie (thumbnails, kleurextractie) |
ext-intl |
Nummerformattering, locale-bewerkingen |
ext-json |
JSON-encoding/-decoding doorheen de hele applicatie |
ext-libxml |
XML-verwerking (EDI-orders, leverancierfeeds) |
ext-mbstring |
Multibyte-stringbewerkingen |
ext-memcached |
Memcached-client voor vertalingen en data-caching |
ext-pdo |
Databasetoegang (MySQL) |
ext-simplexml |
Lichte XML-parsing |
ext-soap |
SOAP-webservices (o.a. DriveRight-voertuigdata) |
Bibliotheken per rol
Routing & HTTP
| Bibliotheek |
Versie |
Rol in dit project |
slim/slim |
^4.0 |
PSR-15 HTTP-dispatcher: storefront via _core/config/router.php, externe API via _api/index.php, admin control panel via _cp/index.php |
nyholm/psr7 |
^1.1 |
Lichtgewicht PSR-7 request/response-implementatie (gebruikt door Slim en _api/) |
symfony/http-foundation |
^7.1 |
Request::createFromGlobals() in de legacy Controller-basisklasse (_core/controller/classes/atx/Controller.php:372); de $request-property is gedeclareerd op :90 |
Datalaag
| Bibliotheek |
Versie |
Rol in dit project |
doctrine/orm |
^3.2 |
ORM voor alle moderne entiteiten; EntityManager beschikbaar via ServiceRegistry::getEntityManager() |
doctrine/dbal |
^4.0 |
Directe SQL-uitvoering naast ORM; gebruikt door legacy DAO-klassen |
doctrine/migrations |
^3.8 |
Databasemigraties (./bin/doctrine migrations:generate + migrations:migrate) |
doctrine/collections |
^2.2 |
Collectietypes binnen entiteiten |
carbonphp/carbon-doctrine-types |
^3.2 |
Carbon-types voor Doctrine-datum/tijd-kolommen |
nesbot/carbon |
^3.6 |
Datum- en tijdmanipulatie in services en crons |
Dependency injection & container
| Bibliotheek |
Versie |
Rol in dit project |
league/container |
~5.1.0 |
IoC-container; gecombineerd met ServiceRegistry als service-locator (_core/model/classes/atx/system/ServiceRegistry.php) |
Console & CLI
| Bibliotheek |
Versie |
Rol in dit project |
symfony/console |
^7.1 |
Symfony Console Application; entrypoint is cli.php; commando's worden als service-providers geregistreerd |
Templating
| Bibliotheek |
Versie |
Rol in dit project |
twig/twig |
^3.1 |
Twig-templates voor nieuwere modules (EDI, OrderDocuments, EmailTemplate, Admin-onderdelen) |
aura/html |
^2.4 |
HTML-helper voor de legacy view-laag |
symfony/templating |
^6.4 |
Symfony Templating-component (legacy bridge) |
Caching
| Bibliotheek |
Versie |
Rol in dit project |
symfony/cache |
^7.2 |
PSR-6/PSR-16 cache-abstractie; Memcached-adapter voor vertaalkopij en andere gecachte data |
cache/session-handler |
^1.2 |
PSR-6-gebaseerde sessie-handler |
E-mail
| Bibliotheek |
Versie |
Rol in dit project |
phpmailer/phpmailer |
^7.0 |
Transactionele e-mail; gewikkeld in atx\system\Mail |
Betalingen
| Bibliotheek |
Versie |
Rol in dit project |
paynl/sdk |
^2.2 |
Pay.nl-betaalplatform; exchange-callback via de Slim-route /exchange in _core/config/router.php:87 |
Bestandssysteem
| Bibliotheek |
Versie |
Rol in dit project |
league/flysystem |
^3.28 |
Bestandssysteemabstractie (lokaal, FTP, SFTP) |
league/flysystem-ftp |
^3.28 |
FTP-adapter voor leverancierfeeds |
league/flysystem-sftp-v3 |
^3.28 |
SFTP-adapter |
PDF-generatie
| Bibliotheek |
Versie |
Rol in dit project |
mpdf/mpdf |
dev-development |
PDF-export van facturen en orderdocumenten |
| Pakket |
Rol |
atraxion/tyre24-client ^5.0 |
Tyre24-platform (private GitHub-repo atraxion/tyre24-client) |
jlevers/selling-partner-api ^7.4 |
Amazon Selling Partner API |
darkaonline/ripcord ^0.3 |
XML-RPC-client (Odoo RPC-bridge) |
guzzlehttp/guzzle ^7.0 |
HTTP-client voor externe REST-calls |
cloudflare/sdk ^1.3 |
Cloudflare Zones API; gebruikt in src/Cloudflare/ServiceProvider/CloudflareServiceProvider.php |
Authenticatie & beveiliging
| Bibliotheek |
Versie |
Rol in dit project |
pragmarx/google2fa |
^9.0 |
TOTP twee-factor-authenticatie (klantlogin) |
defuse/php-encryption |
^2.0 |
Symmetrische versleuteling van gevoelige data |
lcobucci/jwt |
^5.3 |
JWT-tokens voor API-authenticatie |
bacon/bacon-qr-code |
^3.0 |
QR-codegeneratie bij 2FA-setup |
Voertuig- & klantdata utilities
| Bibliotheek |
Versie |
Rol in dit project |
geoip2/geoip2 |
^3.0 |
GeoIP-lookup voor land-detectie bij bezoekers |
giggsey/libphonenumber-for-php |
^8.11 |
Telefoonnummervalidatie |
dragonbe/vies |
^2.1 |
Europese BTW-nummervalidatie (VIES) |
geocoder-php/nominatim-provider |
^5.8 |
Geocoding via Nominatim/OpenStreetMap |
Observability
| Bibliotheek |
Versie |
Rol in dit project |
sentry/sentry |
^4.7 |
Foutrapportage en performance-tracing; geïnitialiseerd in _www/appconfig/bootstrap.php:13 |
matomo/matomo-php-tracker |
^3.0 |
Analytics-events naar Matomo sturen via src/Matomo/ |
Overige utilities
| Bibliotheek |
Versie |
Rol in dit project |
league/fractal |
^0.20 |
Data-transformers voor API-responses in _api/ |
openspout/openspout |
^4.13 |
Excel/CSV-lezen en -schrijven (import/export) |
sabre/xml |
^4.0 |
XML-serialisatie (EDI-orders) |
cocur/slugify |
^4.5 |
URL-slug-generatie |
spatie/schema-org |
^3.11 |
Schema.org gestructureerde data (SEO) |
claviska/simpleimage |
^4.2 |
Beeldbewerking |
league/color-extractor |
^0.4 |
Dominante kleurextractie uit velgafbeeldingen |
dbrekelmans/bdi |
^1.3 |
Browser-detectie |
jaybizzle/crawler-detect |
^1.3 |
Bot/crawler-detectie |
webmozart/assert |
^1.11 |
Defensieve assertions in services |
league/oauth2-client |
^2.7 |
OAuth 2.0-authenticatiestroom |
knops/virustotal-client |
^1.0 |
VirusTotal-API voor documentscan bij orderdocumenten |
ronanguilloux/isocodes |
^2.2 |
ISO-codes (landen, munten) |
symfony/expression-language |
^7.1 |
Expressietaal voor dynamische kortingsregels |
symfony/dom-crawler + css-selector |
^7.1 |
HTML-parsing in tests |
symfony/filesystem |
^7.1 |
Bestandssysteemhulpfuncties |
symfony/mime |
^7.1 |
MIME-types en e-mailconstructie |
symfony/panther |
^2.1 |
Browser-/integratietests (composer.json:80) |
self-made/core |
1.0 |
Interne gedeelde kernbibliotheek (private, knopsmedia/self-made-core) |
phpxmlrpc/polyfill-xmlrpc |
^1.0 |
XML-RPC-polyfill |
Dev-dependencies
| Bibliotheek |
Rol |
phpunit/phpunit ^11.2 |
Unittests |
phpstan/phpstan ^2.1 |
Statische analyse |
friendsofphp/php-cs-fixer ^3.87 |
Code-stijlcontrole |
phpmd/phpmd ^2.12 |
Mess detection |
squizlabs/php_codesniffer ^4.0 |
Code-stijlcontrole |
ergebnis/composer-normalize ^2.45 |
composer.json-normalisatie |
Zie ook: Repository-structuur voor de mapindeling, Service container & bootstrap voor hoe de bibliotheken geïnitialiseerd worden.