Object oriented EDI handling in PHP
- by Robert van der Linde
I'm currently starting a new sub project where I will:
Retrieve the order information from our mainframe
Save the order information to our web-apps' database
Send the order as EDI (either D01b or D93a)
Receive the order response, despatch advice and invoice messages
Do all kinds of fun things with the resulting datasets.
However I am struggling with my initial class designs.
The order information will be retrieved from the mainframe which will result in a "AOrder" class, this isn't a problem, I am not sure about how to mold this local object into an EDI string.
Should I create EDIOrder/EDIOrderResponse/etc classes with matching decorators (EDIOrderD01BDecorator, EDIOrderD93ADecorator)? Do I need builder objects or can I do:
// $myOrder is instance of AOrder
$myOrder->toEDIOrder();
$decorator = new EDIOrderD01BDecorator($myOrder);
$edi = $decorator->getEDIString();
And it'll have to work the other way around as well. Is the following code a good way of handling this problem or should I go about this differently?
$ediString = $myEDIMessageBroker->fetch();
$ediOrderResponse = EDIOrderResponse::fromString($ediString);
I'm just not so sure about how I should go about designing the classes and interactions between them.
Thanks for reading and helping.