Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

JillzTom's avatar

Why experienced developers consider Laravel as a poorly designed framework?

I saw the following post on reddit.

I have been developing in Laravel and I loved it.
My work colleagues that have been developing for over 10 years (I have 2 years experience) say that Laravel is maybe fast to develop and easy to understand but its only because it is poorly designed. He is strongly Symfony orientated and as per his instructions for past couple of months I have been learning Symfony and I have just finished a deployment of my first website. I miss Laravel ways so much.
His arguments are as follows: -uses active record, which apparently is not testable, and extends Eloquent class, meaning you can't inherit and make higher abstraction level classes -uses global variables that will slow down application
He says "use Laravel and enjoy it", but when you will need to rewrite your code in one years time don't come to seek my help.
What are your thoughts on this?
Many thanks.

Link: https://www.reddit.com/r/PHP/comments/3bmclk/why_experienced_developers_consider_laravel_as_a/ Is that true? What's your opinion about this? @JeffreyWay Any thoughts?

0 likes
62 replies
renedekat's avatar

@JillzTom With all due respect to your colleague, but he is talking nonsense. The Eloquent active record might not be the fasted, but you are free to replace it with any DB driver you like. Fancy Doctrine? Go ahead. Fancy your own? Go ahead. The active records are perfectly testable. Draw your own conclusions on what kind of a guy he is. Perhaps he loves showing off and thinks he knows it all.

6 likes
JillzTom's avatar

@renedekat Laravel is a great choice for rapid development and better code. The above link is being sent to me by my colleague because we wanted to get better opinions from people who actually uses Laravel now and he's just concerned about it just like anyone else would. Plus the link is from Laravel 4.x I guess.

ohffs's avatar

I'm using laravel for a £50million project just now - it's fine, really. Admittedly after brexit that's worth about US$3, but still... ;-)

I think there's a lot of eye-rolling from people as Laravel makes development so easy and pain-free. People point at specific things or terms and go 'ah-ha! fail!'. It reminds me a bit of when Delphi came out and there was lots of eye-rolling from 'real' programmers**. I was at a meeting a while back with some symfony certified consultants and they referred to Laravel as 'that thing based on Symfony' :: eye-roll eye-roll ::

It also reminds me of back when Rails came out - there was (and still is) a lot of eye-rolling and moaning from PHP folks about it. Rails made development of web apps so easy compared to what was around for PHP at the time that a lot of developers shifted over. Queue lots of 'real' programmers pointing at it and saying 'Look at $some_tiny_aspect! Fail!'.

Laravel is fine for almost anything you're likely to do - and if you're wanting to do something really esoteric or 'web scale' then you're going to have problems with pretty much any framework. There will be bugs, there will be bits of it that people eye-roll at, but it helps you get your job done in a way that's very likely a lot better than you'd manage otherwise.

It's also got a very large community at this point and a lot of 'mindshare' in the PHP world.

** For old times sake : http://web.mit.edu/humor/Computers/real.programmers

12 likes
JillzTom's avatar

@ohffs That's good to know. Also we are considering about micro-services as we grow! I know there is no big sass app using just one language.

d3xt3r's avatar

Very well put by @ohffs , but what i would like to emphasis is that its a framework (designed for masses) and as with any framework, it has its own advantages and limitations, BUT,so far what i have seen is, laravel as a framework, is quite flexible and any seasoned developer can always have his way around it to solve complex problems.

ohffs's avatar

Ah, micro services - I used to just write 'little programs' ;-) It all comes down to your project - it's impossible to give a general guide. I've got some 'micro services' to do specific network-related logging, some service monitoring, some stats stuff, a few helper API's for things - but there's no way to say 'At point X you need micro-service Y'.

ohffs's avatar

@d3xt3r yeah - I'm very, very wary of tying myself to one specific framework, language or platform. The first company I ever had was built on one - the underlying corporation behind it went basically bust and it's forever stuck in my mind (hello Atari!). So I do tend to catch myself if I'm doing anything very tied to laravel and think for a bit about whether to abstract it - but so far that's been a really tiny fraction of code in any projects I've used it for.

davestewart's avatar

@ohffs - 'Real Men' don't eat quiche; they eat flaaaaaan

PS. For some unknown reason I've just clocked how your username should read! Ha! Very good :D

ohffs's avatar

@davestewart heh - I was having an especially bad day when I had to pick the username ;-)

davestewart's avatar

It's one of my main go-to catharticisms; you have my full approval!

ohffs's avatar

@JillzTom it's kind of frowned on by purists (sometimes in an almost tabs-vs-spaces kind of way). Taylor has a blog post about it here : http://taylorotwell.com/response-dont-use-facades/ and some more thoughts from someone at : https://medium.com/@assertchris/if-facades-ruled-the-world-bc06daef0802#.42d3jv5j5 . Generally, they're fine unless they cause you a problem - like everything else they have trade-offs :-)

Edit: one more link taking a more negative look at them : http://programmingarehard.com/2014/01/11/stop-using-facades.html/

willvincent's avatar

Frankly I don't see the appeal of Symfony. It's obtuse and needlessly complex. I think like some of the more difficult JS frameworks, people use it to feel superior. Like "I'm smart enough to use this obtuse thing that does all the same things your easy to use thing does, therefore I'm better than you."

I don't want to have to work that hard. Let me focus on solving the business problem, not fight with my framework. But ... maybe that's just me. :)

6 likes
jlrdw's avatar

There are thousands of experienced Developers I doubt that all of them look at things this way so really there's not a whole lot of thought to put to this. The only thing to add is backwards compatibility that PHP does not have as good as Java Technologies.

JillzTom's avatar

@ohffs and @willvincent And what's this big fuzz about the Eloquent in Laravel?

"uses active record, which apparently is not testable, and extends Eloquent class, meaning you can't inherit and make higher abstraction level classes -uses global variables that will slow down application"

How do we approach to this statement?

jlrdw's avatar

@JillzTom just wondering what you mean by the testing thing? I recently wrote an accounting package and I literally put various query results into an Excel spreadsheet and use the sum function to verify that the queries were returning the correct results. So there is more than one way to test.

DarkRoast's avatar

They might mean it's more difficult to test eloquent in isolation (without hitting the database). I don't think this is a big deal though and definitely doesn't mean it isn't testable.

ohffs's avatar

@jlrdw you keep saying

backwards compatibility that PHP does not have as good as Java Technologies

But you never explain. You keep comparing Laravel to Java, which is apples to oranges. Outside of a very few fairly niche changes in 7, I can't think of anything that would stop me writing PHP3/4 code and running it on the current release. PHP is fairly notorious in fact for not doing breaking changes.

willvincent's avatar

And what's this big fuzz about the Eloquent in Laravel?

"uses active record, which apparently is not testable, and extends Eloquent class, meaning you can't inherit and make higher abstraction level classes -uses global variables that will slow down application"

How do we approach to this statement?

That strikes me as being largely FUD (Fear, Uncertainty & Doubt) and not anything based on reality. And, as has been mentioned previously, nobody is forcing you to use eloquent... though it is kind of a major component of Laravel so not using it at least partially seems kind of dumb to me.

willvincent's avatar

PHP is fairly notorious in fact for not doing breaking changes.

And when they do, they've typically given several years of advance warning by allowing older functions to continue to work, but throw 'deprecation' warnings.

davorminchorov's avatar

It looks like these experienced developers who think that Laravel is bad are focused on the details of the framework, rather than what it can do and how it can help the developer to build stuff and finish projects for clients. At the end of the day, I don't think it's really that much important what the framework does behind the scenes as long as the app you are building can be supported by the framework.

As far as I know, every possible framework, tool or technology has flaws behind the scenes but not a lot of people care about them, as long as they get the job done when properly used and combined. It really depends on what the developer is building, that's all.

Maybe building something as big as Amazon, you will end up mixing a few frameworks, tools and technologies and Laravel / put your framework right here won't be alone in this process.

1 like
SaeedPrez's avatar

The "experienced developer's" arguments is like saying a car is bad because you can use it as a weapon and drive over people.

2 likes
b's avatar

Their arguments sometimes remind me of crazy football fans, regardless of losing or winning they think what they're using is the best and the competitors out there are just a load of shit.

Couple of years ago, I was working in a company on a project which had been developed for more than 12 years. Super big, complicated, bad designed, etc. Worst thing was that it was completely written in ColdFusion. The project manager who the project was actually like his child, seeing it growing over years strongly believed ColdFusion is the best language in the world. I used to make fun of it as I used to say ColdFusion is alive only because of this project.

Yes, he was indeed an experienced developer with weird opinions.

ctroms's avatar

@JillzTom For what it's worth...

I am not trying to knock reddit or the owner of the post you were referring to, but, having read responses that some of the people in this very conversation have given others here on Laracasts, I would tend to trust their opinion more than those from some people that a random reddit user knows.

For my purposes, Laravel combined with its community makes it my framework of choice for any php project without hesitation. I've never thought once that it might not be able to handle a project. IMO It makes development enjoyable and lets me focus on what happens inside the app directory. Usually when there is a bug, its in my code and not Laravel's.

1 like
JillzTom's avatar

When somebody says it's bad design, 70% of the time, its just because they really didn't take a deeper look in to that framework or project.

I would assume this would be a topic for @JeffreyWay 's next podcast snippet.

1 like
jimmck's avatar

@JillzTom Pick the frameworks/libraries to do the job. Laravel did not invent anything new it just offers a way to build network based applications. I always though references to 'Active Record' was to .Net DB libs. Its seems it is referring to Ruby as after the reading docs, Eloquent sounds like a port of Ruby's DB implementation. Those docs caution the reader about the potential performance impact of not using Joins. Laravel advertises about solving the "N+1" problem. I always thought they found a lost mathematical proof. I work with databases in the millions of rows, Eloquent would not be a solution. In fact if you go on an interview at a financial, insurance or firm with heavy database requirements, I would recommend just not mentioning "N+1". I like Laravel for proof of concept and utilities. Using PHP generally in any big shop can be a sell as Java is so prevalent. But Facebook is an example of how things change. I started out building Windows applications in C/C++ and Java was considered cute with no tools. Then came small companies like Weblogic with frameworks that made it easier to solve problems. Jeff actually did a nice video on Symphonys file finder. It was nice and useful and we have it available to us. I am using more parts now. The Composer fire dance is a pain in the ass, but compared to Java JAR hunts and C++ DLL wars, it very simple to configure an environment. So learn how to use all the frameworks and pick what you need.

bugsysha's avatar

When ever I hear about "bad design" of Laravel, I can't help not to think about people that just jump from one tool/framework/language to the other cause they can't learn any of them. Also I think about people who try to reinvent the wheel because of the same reason. Best way to describe it is South Park Smug Alert episode where people think that they are better than others because they are using something that others do not, and like the smell of their own farts.

As for Laravel vs Symfony, Ockham's razor, simpler solutions are generally better than more complex ones.

I also think that bunch of people in IT just try to go with trend, trying to be hip.

And this is how they look like

toooooo ugly

jlrdw's avatar

I think one thing is being overlooked here no one is forcing anyone to use an active record pattern if they don't want to. You can actually write regular queries all day long in Laravel. Taylor left it up to the end user the techniques that end user desires.

Next

Please or to participate in this conversation.