I am resuming my work on the Quark Framework, the name I chose back in 2017. This time however, I am starting with a lot of documentation before putting any effort into the coding process.
Quark Framework History
Back in 2012, I have attempted my first go into the world of software design. I was using the Codeigniter framework, and at some point it felt so limited that I started hacking it’s core. That was a very interesting approach, and a very fruitful experience.
The second attempt was in 2013, after having learnt Symfony 2, I went back to my previously modified Codeigniter version and decided it was not clean. But hopefully, I found a guide on how to build a custom framework using the symphony 2 components. I have actually managed to finish and customize it, but It wasn’t reflecting my own vision on how a framework should be, so I left it that way.
In 2015, I had to write some modules/pages for 4 similar websites at the same time. In the meantime, I have had some ideas about a new framework approach, so I gathered my courage and decided I would implement those modules using one framework core/base code, and make the magic happen.!
Sure enough, the magic did happen, and the code successfully worked for all four websites with very little/mild bugs that I have fixed along the way. But deep down, I knew it was not a clean implementation, and that It can’t scale to a production ready, bigger website like an e-commerce or a heady transactional platform.
In 2018, I have decided it was time to give it another go, with a proper implementation. I picked some of the best packages available from the PHP community like the Symfony components, and the PHP League components.
Although not completed, the core ideas were finally on the right track, and the implementation was a lot cleaner (It’s still hosted on GitHub). This implementation features the following:
- PSR-4 autoloading
- Dependency injection through service providers
- Dynamic Route Mapping
- Convention over Configuration
- Automatic modules loading
The Framework Today
As I said earlier, I resumed working on my Framework, now that I have a clearer idea of what I am willing to achieve. The following outlines my goals:
- More documentation and prior software design
- Proper diagraming before diving into the code
- Using the latest version of PHP to date (7.4)
- Using little or no existing components (more fun to write my own)
With no further due, this is the first draft of the Framework’s Architecture: The Package Diagram:
Check my other programming articles.