It's all about adapting.
Nanasi Sms uses adapter pattern. This pattern is so useful in mediating API incompatibilities.
JasiriLabs\NanasiSms\NanasiSmsOperator interface defines the contract that shows how you can interact with Nanasi Sms.
JasiriLabs\NanasiSms\NanasiSms (the main Nanasi Sms operator implementation) uses adapters to do the real work. Every adapter is an implementation of the
JasiriLabs\NanasiSMS\NanasiSmsAdapter interface.All adapters conform to the same specifications.
In visual appearance, it's like:
Your code is not directly coupled to the adapter. So you can use any adapter you want at any time. 😉