1 year ago (3,340 XP)


Great point scopefragger. Things change fast in the programming world.

Frameworks are at the highest order of complexity, so it's no wonder they come and go. Next would be packages, and after that languages.

That means a PSR PHP package as a longer shelf life than code coupled to a framework.

It's a good idea to strive for decoupled code if you care about long life.


Your friends make a good point, and the answer you have marked as "best" by thc1967 actually goes some way to support it, despite their intention to be the opposite, with the line "Understanding good OO design principles, that will last you a career". You can code in Laravel without knowing OO design principles, and without it ever letting you know they should at least be considered.

Now, before I go any further, let me first tell you that I love Laravel, and it's my first choice framework, however, to put it simply, it is the Wordpress of frameworks, and by that I mean that it allows you to be a really poor developer, and if it allows you to be this, then many people may invariably be just that.

To put this in perhaps a fairer way, if you are a beginner, it will hamper your progression to being an expert as it allows you to do too many things wrong that you may not even realise are wrong.

For example, whilst "Facades" may well be perfectly testable etc, calling the facade of one service in the method of another on the fly is a violation of some of the basic principles of OOP coding, namely decoupling. Now Laravel has the functionality which allows you to follow those principles, but if you are a beginner to both PHP and/or Laravel, you may not realise that you can do this, or that you should.

If however, you decided to start using Symfony or Zend 2, these frameworks (despite their flaws) will practically force you to at least take these principles into consideration. You may still implement things incorrectly, but at least they have forced some kind of discussion upon you.

Please sign in or create an account to participate in this conversation.