

# MaplePHP - Layered structure MVC PHP framework

**MaplePHP is a layered structure MVC PHP framework** that very user-friendly and does not compromise on performance or scalability. By leveraging a modular architecture and with full PSR support, the framework allows for easy customization and flexibility, enabling developers to pick and choose the specific components they need to build their applications.

## Documentation
**[You can find the full MaplePHP documentation here](https://maplephp.wazabii.se/)**

#### The documentation is divided into several sections:
-   [Why MaplePHP?](https://maplephp.wazabii.se/)
-   [Get started](https://maplephp.wazabii.se/guide/get-started)
-   [Installation](https://maplephp.wazabii.se/guide/installation)
-   [Service Provider](https://maplephp.wazabii.se/guide/service-provider)
-   [Dependency injector](https://maplephp.wazabii.se/guide/dependency-injector)
-   [Controller](https://maplephp.wazabii.se/guide/controller)
-   [Middlewares](https://maplephp.wazabii.se/guide/middlewares)
-   [Routers](https://maplephp.wazabii.se/guide/routers)
-   [And much more...](https://maplephp.wazabii.se/)

## Why Choose MaplePHP?
MaplePHP is designed with a commitment to **independence** and adherence to best practices, implementing **PHP Standards Recommendations (PSR)**. Within the framework, you'll find a variety of excellent libraries, including query, cache, logger, and more. However, we don't impose them on you. Feel free to utilize familiar third-party libraries or extend MaplePHP's functionality with your own. In our philosophy, dependencies should be at your discretion, not dictated by the framework.

Our library architecture is unique – each library within MaplePHP is self-contained or, in some instances, relies on another MaplePHP library. This approach not only ensures that you can initiate projects without external dependencies but also allows for an efficient use of resources. By avoiding redundancy, the framework steers clear of becoming bloated. 

Updates to MaplePHP are delivered through minor and patch versions, ensuring smooth project updates without breaking changes. This compatibility extends to PHP 8 and potentially beyond. With MaplePHP, you have the flexibility to shape the framework to meet your development needs without unnecessary constraints. Mening you will get all the latest functionality but you will never see Maple version 4 because you most likely already retired ;).

### Advantages
- **User-friendly:** MaplePHP is straightforward and intuitive. 
- **High Performance:** The framework is optimized for speed, providing efficient execution and reduced processing times. 
- **Full PSR Support:** MaplePHP fully adheres to PHP Standards Recommendations, promoting standardized and interoperable code. 
- **Modular Architecture:** With a modular structure, developers can easily customize and extend functionality based on project requirements. 
- **Efficient Library Integration:** MaplePHP libraries seamlessly work with other frameworks as well as within the MaplePHP environment.
- **Service Providers:** MaplePHP offers service providers, streamlining the integration of external services and enhancing application capabilities. 
- **Multilingual Support:** You can very easily add translations to your project.
- **Built-in Security Measures:** Built-in protection against common vulnerabilities such as XSS (Cross-Site Scripting), CSRF (Cross-Site Request Forgery), session injection, and MySQL injection. 
- **Emitter, CSP, Strict Transport-Security:** The framework includes features like Emitter for efficient HTTP response handling, Content Security Policy (CSP) for enhanced security against code injection, and Strict Transport-Security for secure communication. 
- **Dependency Flexibility:** Developers have the freedom to choose and control dependencies, ensuring that MaplePHP doesn't impose unnecessary constraints on project structures. 
- **Continuous Updates:** MaplePHP offers regular updates through minor and patch versions, allowing developers to stay current without worrying about breaking changes. 
- **Long-Term Compatibility:** MaplePHP commits to compatibility with PHP version 8 and beyond, providing a stable foundation for long-term projects.


## Much more to be done
While substantial progress has been achieved, there is still much on the horizon. Ongoing tasks include **rigorous quality testing and comprehensive documentation updates**, all aimed at ensuring an even more user-friendly experience for developers.

### For the full guide:
[Click here](https://maplephp.wazabii.se/)

## Library guides
The guide is not complete. There is much more to come.
 - [Routing](https://github.com/MaplePHP/Handler)
 - [Container](https://github.com/MaplePHP/Container)
 - [Dependency injector](https://github.com/MaplePHP/Container#dependency-injector)
 - [Event handler](https://github.com/MaplePHP/Container#event-handler)
 - [Http](https://github.com/MaplePHP/Http)
 - [Request](https://github.com/MaplePHP/Http#request)
 - [Response](https://github.com/MaplePHP/Http#response)
 - [Messaging](https://github.com/MaplePHP/Http#message)
 - [Stream](https://github.com/MaplePHP/Http#stream)
 - [Client requests](https://github.com/MaplePHP/Http#create-a-request)
 - [Cache](https://github.com/MaplePHP/Cache)
 - [DTO](https://github.com/MaplePHP/DTO)
 - [Form](https://github.com/MaplePHP/Form)
 - [Log](https://github.com/MaplePHP/Log)
 - [Output](https://github.com/MaplePHP/SwiftRender)
 - [Query](https://github.com/MaplePHP/Query)
 - [Roles](https://github.com/MaplePHP/Roles)
 - [Validate](https://github.com/MaplePHP/Validate)
 - Clock (Guide not complete)
 - Cookies (Guide not complete)
 - Auth (Guide not complete)
