I am working on a Symfony 4 rest API application which will be use by multiple client(about 20 different clients). Each client has his specific needs so I have to fork the web application for each client in order to implement the specific needs. For example, the PriceController which manage the pricing policy will have a customized implementation for each customer. I evaluate to 80% the common code and 20% of customization for each client.
My idea is to create a base application with all the base code and for each client, fork the base application and use the concept of bundle/namespace to extends the base classes in order to add the customization.
For example, I define a Core/Controller/PricingController.php in order to manage the pricing policy. For a Client CorporationA, I create a CorporationA/Controller/PricingController.php and for another client CorporationB I create a CorporationB/Controller/PricingController.php which both extend the Core/Controller/PricingController.php.
If I have to implement a specific behaviour just for the CorporationB client, I add the specific code in the dedicated class.
What is your opinion about that ? Do I have to manage the customization in a different way ?
Thank you for your help.