<h1 align="center"> <a href="https://codefyphp.com/" target="_blank"><img src="https://downloads.joshuaparker.blog/images/codefyphp-460x105.png" width="400" alt="CodefyPHP Logo"></a> </h1> <p align="center"> <a href="https://codefyphp.com/"><img src="https://img.shields.io/packagist/v/CodefyPHP/codefy?label=CodefyPHP" alt="Latest Stable Version"></a> <a href="https://www.php.net/"><img src="https://img.shields.io/badge/PHP-8.2-777BB4.svg?style=flat&logo=php" alt="PHP 8.2"/></a> <a href="https://packagist.org/packages/codefyphp/codefy"><img src="https://img.shields.io/packagist/l/codefyphp/codefy" alt="License"></a> <a href="https://packagist.org/packages/codefyphp/codefy"><img src="https://img.shields.io/packagist/dt/codefyphp/codefy" alt="Total Downloads"></a> <a href="https://codefyphp.com/community/"><img src="https://img.shields.io/badge/Forum-AE508D.svg?label=Support&style=flat" alt="CodefyPHP Support Forum"></a> </p> --- CodefyPHP is __not__ a framework such as the likes of Symfony, Laravel, Codeigniter or CakePHP. Codefy is a simple, light framework providing interfaces and implementations for architecting a Domain Driven project with CQRS, Event Sourcing and implementations of [PSR-3](https://www.php-fig.org/psr/psr-3), [PSR-6](https://www.php-fig.org/psr/psr-6), [PSR-7](https://www.php-fig.org/psr/psr-7), [PSR-11](https://www.php-fig.org/psr/psr-11), [PSR-12](https://www.php-fig.org/psr/psr-12/), [PSR-15](https://www.php-fig.org/psr/psr-15), [PSR-16](https://www.php-fig.org/psr/psr-16) and [PSR-17](https://www.php-fig.org/psr/psr-17). The philosophy of Codefy is that code should be systematized, maintainable, and follow OOP (Object-Oriented Programming). CodefyPHP tries not to be too opinionated, yet encourages best practices and coding standards by following [Qubus Coding Standards](https://github.com/QubusPHP/qubus-coding-standard). Use Codefy as you see fit. You can tap into all, some or none of the features and instead use the interfaces to build your own implementations for a domain driven project. <h3 align="center"> <img src="https://downloads.joshuaparker.blog/images/UserId.png" width="660" alt="UserId ValueObject"> </h3> ## 📍 Requirement - PHP 8.2+ - Additional constraints based on which components are used. ## 🏆 Highlighted Features - A powerful [routing engine](https://docs.qubusphp.com/routing/) - Robust [dependency injector](https://docs.qubusphp.com/dependency-injector/) for bootstrapping - Adapters for cookies, sessions and cache storage - Provides a simple hook and event system without affecting core code - Encourages object-oriented programming - Multiple PSR implementations - Dual query builders with migrations - Scheduler for scheduling tasks/jobs - Security and sanitizing helpers - Dual templating engines - NIST Level 2 Standard Role-Based Access Control ## 📦 Installation You can use the composer command below to install the library, or by creating a new Codefy project using the [skeleton](https://github.com/CodefyPHP/skeleton) package. ```bash composer require codefyphp/codefy ``` ## 🕑 Releases | Version | Minimum PHP Version | Release Date | Bug Fixes Until | Security Fixes Until | |---------|---------------------|----------------|-----------------|----------------------| | 1 | 8.2 | September 2023 | July 2024 | March 2025 | | 2 - LTS | 8.2 | September 2024 | September 2027 | September 2028 | | 3 | 8.3 | October 2024 | August 2025 | April 2026 | | 4 | 8.4 | February 2025 | December 2025 | August 2026 | | 5 - LTS | 8.4 | April 2025 | April 2028 | April 2029 | ## 📘 Documentation Documentation is still a work in progress. Between the [Qubus Components](https://docs.qubusphp.com/) documentation and [CodefyPHP's](https://codefyphp.com/documentation/) documentation, that should help you get started. If you have questions or need help, feel free to ask for help in the [forums](https://codefyphp.com/community/). ## 🙌 Sponsors If you use CodefyPHP or you are interested in supporting the continued development of my opensource projects, please consider sponsoring me via [Github](https://github.com/sponsors/nomadicjosh). ## 🖋 Contributing CodefyPHP could always be better! If you are interested in contributing enhancements or bug fixes, here are a few rules to follow in order to ease code reviews, and discussions before I accept and merge your work. - You MUST follow the [QubusPHP Coding Standards](https://github.com/QubusPHP/qubus-coding-standard). - You MUST write (or update) unit tests. - You SHOULD write documentation. - Please, write [commit messages that make sense](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html), and rebase your branch before submitting your Pull Request. - Please [squash your commits](http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html) too. This is used to "clean" your Pull Request before merging it (I don't want commits such as `fix tests`, `fix 2`, `fix 3`, etc.). ## 🔐 Security Vulnerabilities If you discover a vulnerability in the code, please email [joshua@joshuaparker.dev](mailto:joshua@joshuaparker.dev). ## 📄 License CodefyPHP is opensource software licensed under the [MIT License](https://opensource.org/license/MIT/).