The birth of EasyMVC

PXL Building B

The first steps in the creation of the EasyMVC framework was done during my years at PXL University College, Hasselt, Belgium. It was during my Bachelor of Professional Studies in the Information Technology that I started to develop it.

During the course Web and Mobile (2016), my team had to build an application with REACT in combination with a PHP REST API. For the REST API, we were allowed to use any Router-package that was available through Composer. Instead of using an existing one, I decided to see if I could build my own Router class and add it to the website 'Packagist.org'. This went rather well, and without realizing it, I had just made my first step in creating my personal PHP framework.

The next time I used my Router class, was during the course Web Expert (2016). This time, we needed a REST API to provide data for our AngularJS applications. It was during this course, that I started to build my MVC-framework around my Router and gave it the name EasyMVC. I also added an extra class 'Controller' to the framework to help with the output responses for the requests the Router received.

During the Christmas-holiday, I rewrote the two existing classes of the framework and added a Repository class to make it easier to work with the repository- and the model classes.

Early 2017, we had a course called AppDev Project. For this project, we worked in a team of six people, and we needed to build three different applications. We needed to build a website and a Desktop Application that could interact with an online database. The Desktop Application would interact with the database through an RESTful API, while the website was allowed to make a direct connection to the database.

Because most of the team members had experience with .NET, we decided that we would make three teams of two people. The first team would build the RESTful API in ASP.NET, the second team a desktop application in C#.NET and the third team would build a website in PHP.

Of course, I was part of the PHP-team and early on; I decided to take a risk and suggested we would use my own framework for it and not a framework like Laravel or Symfony. To convince my partner, I showed him a few little experiments I had already built with it, and he quickly agreed on using my framework for our project.

It was during this project, that I added most of the classes that my framework could use in helping to build a website. We had a few hiccups, here and there, but in overall, everything went very smoothly. Mostly, because I also added Twig to my framework for building the views. We both had some experience with it because we both had worked with Symfony already.

During the summer of 2017, I again rewrote my framework, and decided to build it as modular as I could. Because of this, the framework became more of an empty skeleton on which a website could be built. All the classes that I had built for my framework, received its own GitHub repository, so it was now possible to load only those classes that were needed for the website. By doing it like this, I would prevent that my framework would always load all the classes that existed for it. This is also one of the reasons I don’t like to use Laravel or Symfony. They are just too bloated with classes that often aren't needed for the development of certain websites.

While I had plans for the IT-Project (2018) for my framework, I eventually only used it for a temporary solution until the JAVA API was online for our project. During this project, I didn’t do too much work on my own framework, because I was working on an Angular 4 application for our project. Afterwards, during my internship, I was mostly working with Laravel, and so, I also hadn't time to improve my EasyMVC framework.

However, during the summer of 2018, I finally could work on my framework again. I didn’t need to do too much anymore, except for some streamlining of the framework and adding some extra functionality to it. For example, I rewrote my Menu class, so I could now use the same code to generate the HTML-output that could work with my own menu design (CSS) as well as outputting the HTML-code that Bootstrap 4 uses.

It was at the end of the summer of 2018, that I finally published my own framework on the Internet. I first made a website for it and then released version 1.0.0. I decided to share it as open-source, so anyone who was interested in it, could add new classes to the framework.

I haven't built this framework to replace the others, but only to provide an alternative for those who want to build a small website and don't want to use Laravel or Symfony for it.

I'm planning to use my framework for the websites I will build in the future, so, I'm sure that I will probably add other modules to it along the way. And if anyone else created a module for it, please let me know, and I will add a link to your module on the website.