Gacela is a class resolver. It helps you to improve the design of your modules.
Inspired by Spryker Framework: https://github.com/spryker
Splitting your project into different modules will help the design of your project in terms of maintainability and scalability. It will certainly encourage your modules to interact with each other in a unified way by following these rules:
- Different modules can interact only via their
Facade
. - The
Facade
has access to theFactory
. - The
Factory
creates the objects from the module and has access to the Module'sConfig
. - The
Config
gets the values from your defined config files. - The
DependencyProvider
uses the Locator to get the Facades from different modules.
composer require gacela-project/gacela
- Basic concepts: What are the characteristics of a module?
- Facade: The entry point of your module
- Factory: The place where you create your domain services and objects
- Config: Reads the values defined in your config path
- DependencyProvider: It defines the dependencies between modules
- Code generator: Some commands out-of-the-box for generating code
You can see an example of a module using gacela in this repository.
You are more than welcome to contribute reporting issues, sharing ideas, or contributing with your Pull Requests.