Fourteen years ago I used a remarkable programming tool that implemented many of Unix’s tools like awk, sed and regular expression parsers in a language called Perl. It also implemented objects but suffered from a philosophy TIMTOWTDI – “There is more than one way to do it.”
In other words, it allowed you to implement processes that altered data in alternative ways and some of them were more expressive, some more “elegant”. Programmers could boast “I did that in only three lines of code. Yes, they are really difficult to read, that is a demonstration of how clever I must be.”
In 2004 I found PHP. Strange language that it was then, version 3 had just become version 4. Lots of predefined functions, you could make the mistake of thinking it was a functional language. Like Perl, it was an interpreter. It was very fast and generally, there was an effort to increase code clarity. Then Version 5.x arrived and its Object model allowed Inheritance and abstracts like Java. It had a method of implementing Polymorphism, but it was “proper” polymorphism.
In the last couple of years, it skipped Version 6.x and PHP Version 7.x boasted double the speed of the stable version 5.6. It was a trouble free upgrade.
Over the years, various “frameworks” sprung into existence, Zend was the best, most comprehensive and allowed you do use pre-written modules to utilise well written code that was stable to do tasks like making a queue system or talking to a database. Then I learned Symfony and felt like it was a better expression of good coding methods, with excellent tools to more rapidly create systems. Symfony was created by one person. He is French but I found that the documentation and path into it was too many examples and not enough reference. Sometimes hard to find answers or a path into great app development.
And then I discovered Laravel. It reached version 4.2 when I started but the Version 5.x series of revisions made it a brilliant framework. Why? Because its author, Taylor Ottwell is a brilliant developer who created modules that are very well written and documented. Because the Laravel documentation was fastidiously prepared, clear and factual. Because its command line tool, Artisan, had very useful functions. Because you could create a Laravel project with “laravel new project-name”, just like that.
And it used the Symfony component infrastructure. So you can easily create a test database from artisan commands, and migrate new features into your database progressively. Because you can create test data with database seeding and painlessly rebuild your tests. Because it implemented PHPUnit so Test Driven Development (TDD) was painless. Because it integrated successfully with socket-based event handlers and the also elegant Javascript framework VueJS to create systems where client browsers could update each other (dashboards which are live updated were now possible).
And now I have focused on Laravel and its supportive cast of helpful documentation, online training, where features and benefits are easily adopted and each version adds useful features. We are now up to Verison 5.5.
It is a work of artistic genius.