I encourage the use of known frameworks over custom ones, but I decided not to use one when, at an interview, I had 3 hours to prove the technical aspects I’ve been talking about at the first encounter with the employer.
I felt that using a known framework for a basic task like this I couldn’t show too many principles I use when developing. It wasn’t the moment to build a production ready app, it was just to show I can DO what I KNOW.
So my 3-hour journey building a framework from scratch started. It had basic components like:
- front controller
- config file with a service for it
- dependency injection container based on a trait
- main service to handle a request, execute the appropriate resource controller method with a global error handler, and return the JSON response
- resource controller
- multiple database driver factory with a MySql implementation
- database repository
- service between the controller and the repository
- exception for each service and for each situation
- some sanity checks
Although everything was written fast, with only the basic needs, I focused on some aspects:
- it was clean
- most of things decoupled
- where I wanted to point out further needs, I just left a comment, so they now I’m aware about the situation
- it was built as I’ve previously told them I see an implementation like
- services based on contracts
- types enforced by hinting
And they loved it.