Ga naar inhoud

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

Externe platform-integraties

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.