File Structure
Understanding the file structure is crucial for efficiently developing and maintaining services within your Laravel application. Following Laravel's standard conventions, the Orchestration package integrates seamlessly, organizing service-related files in a logical and accessible manner.
.
├─ app
│ ├─ Services
│ │ ├─ Checkout
│ │ │ ├─ Contracts
│ │ │ │ ├─ CheckoutRequester.php
│ │ │ │ └─ CheckoutResponder.php
│ │ │ ├─ AdyenCheckoutRequest.php
│ │ │ ├─ AdyenCheckoutResponse.php
│ │ │ ├─ FakeCheckoutRequest.php
│ └─ └─ └─ FakeCheckoutResponse.php
├─ config
│ ├─ orchestration.php
└─ └─ checkout.php
Services Directory
The 'app/Services' directory is the heart of your orchestrated services, containing each service's contracts, provider gateways, and a fake gateway for testing purposes.
Contracts
Generated by the orchestrate:service
command, the 'ServiceRequester.php' and 'ServiceResponder.php' interfaces lay the foundation for defining a standardized communication protocol between your application and its services.
Provider Gateways
For each provider added via orchestrate:provider
, 'ProviderServiceRequest.php' and 'ProviderServiceResponse.php' are created respectively. These classes are crucial for integrating your application with the service providers, ensuring seamless communication.
Testing
The 'FakeServiceRequest.php' and 'FakeServiceResponse.php' classes, generated along with the service, are designed for mocking the responses for it, facilitating robust testing environments.
Customization
Flexibility is key in Laravel, and orchestration adheres to this principle. You can reorganize your services to fit your application's needs by updating the service-specific configuration file to reflect the new paths for your service provider gateways.
For example, to update the location of the Adyen gateway for the checkout service:
return [
'providers' => [
'adyen' => [
'gateway' => \App\Services\Checkout\Adyen\AdyenCheckoutRequest::class,
],
],
];
This structure and organization facilitate a modular and maintainable approach to service orchestration within your Laravel application, ensuring that your services are both scalable and easy to manage.