libAcumulus is gegroeid vanuit het gemeenschappelijke dat steeds terugkeert in elke webshop plugin. Omdat het niet vanaf het begin is opgezet met het idee dat onderdelen ervan los ergens anders gebruikt kunnen worden, zitten er meer onderlinge afhankelijkheden in dan gewenst. (Het is geen Symfony of Zend framework.)
In versie 7 worden een aantal van deze problemen aangepakt met het doel om de library ook in te kunnen voor alleen het communicatiegedeelte zonder dat daarvoor custom code nodig is anders dan het instantiëren van de Container en het het meegeven van een aantal instellingen/opties. Versie 7 is te vinden onder de dev branche, maar daar zal zeker nog het een en ander aan gewijzigd worden.
bv:
- Log => PSR3 logger interface, wat al door veel projecten gebruikt word en wat dus misschien al voorhanden is in jouw omgeving, of anders snel toegevoegd met composer.
- Dat gedeelte van de Config dat nodig is als een $options array doorgeven aan de constructor ipv het hele Config .object.
NB: Dat die constructor niet intuïtief is, is een gevolg van het dependency injection principe, dat er juist voor zorgt dat een class minder kennis hoeft te hebben van zijn omgeving. Gebruik dus die Container die precies weet wat er nodig is om een object te maken. Je ziet dat de meeste webshop modules code als hieronder gebruiken om de boel op te zetten en vervolgens te gebruiken:
<?php
// Get language
$languageCode = get_bloginfo('language');
if (empty($languageCode)) {
$languageCode = 'nl';
}
$languageCode = substr($languageCode, 0, 2);
$shopNamespace = 'WooCommerce';
$container = new Container($shopNamespace, $languageCode);
// Ready to go
$source = $container->getSource(Source::Order, $order instanceof WC_Order ? $order : $orderId);
$container->getInvoiceManager()->sourceStatusChange($source);
// Or:
$acumulusApiClient = $container->getAcumulusApiClient();
$token = '...'; // token for the invoice to set to paid.
$paymentStatus = Api::PaymentStatus_Paid;
$paymentDate = '...';
$acumulusResult = $this->acumulusApiClient->setPaymentStatus(
$token,
$paymentStatus,
$paymentDate
);
?>
NB: Ik ben erg geïnteresseerd in feedback over het gebruik van libAcumulus in andere situaties, dus neem direct contact met mij op (support at burorader dot com) en ik zal jouw bevindingen zeker meenemen in versie 7.