re: Imposter Syndrome: PHP Edition VIEW POST


Boy am I bored of cute analogies like this. The fact is that every language with more than two users is evolving and coping with its legacy one way or another. Yes, PHP absolutely has its problems, maybe more than its fair share, but every time I've read someone's detailed critique, they've included things which are just as bad in several other languages. So to take your house analogy, what if house A is right next door to your family and your job, but has some leaky windows and noisy plumbing; house B only has noisy plumbing in the basement, but it's in France, and you don't speak French?

Once again. Some things are used by more than two persons and are debatable. A lot of them.

However in the case of PHP I cannot see any reasonable argument to start a project with that language.

  • It's easy to use: well, just no. A lot of other options are excellent for beginners and bring more structure to work with
  • There is a huge community... of people coding WordPress modules of sub-amateurish quality
  • There is a lot of libraries: other languages have a lot of libraries and probably even more than PHP (due to various reasons including the better compatibility with C)
  • The language is evolving: other languages are evolved
  • It's faster to work with: personal history shows that it's false (but I can't ask you to believe me)
  • You can do stuff with it: of course, it wouldn't exist otherwise
  • Other languages have flaws too: yup, but the amount of them matters
  • There is a lot of developers: learning new languages should not be an issue for a good developer

Maybe it's just me but I honestly can't see anything good in PHP.

Just about everything that you said is clearly biased against PHP. You speak as someone who hasn't used PHP7 and is mad at Wordpress for promoting poor quality (not that I can blamr you for this last point). But I cannot take you seriously when most of your points are there to artificially inflate your post.

Easy to use: yes, it really is and you haven't used PHP if you deny this. It's not even up for debate, it's one of the core ideas of the PHP ecosystem. Setup is simple and the language is very permissive. Ease of use is the main reason you get so much low quality code, there are simply a lot of beginners using it. In fact you mentioned the ease of use when talking about beginners in your first post in this thread, did you change your mind?

Your community rant is not a real argument, sorry. A language with more than 80% presence in the backend web space is going to have a huge community even when you exclude its most popular CMS whether you like it or not.

Libraries: moot point. All popular languages have many libraries, PHP included. The number is so healthy as to be considered 'enough' anyway.

Other languages are evolving: like PHP has in the past few years? PHP has just been redesigned from the ground up and you compare this to the natural evolution of your average language? Oh boy.. Are you SURE you're aware of PHP7?

Faster to work with: your personal experience does little to affect everyone else's. A purely subjective opinion.I've always found it very quick to prototype in for example.

Flaws: aside from the naming inconsistencies of the standard library and a few quirks which look like child's play if we take Javascript into account I really don't see these numerous flaws you're implying. If you stubbornly refuse to use the === operator that's your problem, not the language's.

I understand you don't like PHP and that's fine. I respect your opinion. But do not try to build arguments based on subjectivity. They get shut down fast because they have no substance. Happy coding.

I'm pretty aware of PHP 7. What's the point of anonymous classes when you're still at risk that a typo will print something above every JSON response a break the whole API?

What I'm trying to say is: I really don't see any good reason to use PHP. There's dirt everywhere you look. It's not about every single flaw, it's about all of them combined.

So what are you gonna use then? Javascript?

There are so many more options out there for server-side development than PHP and Javascript. So. Many. More.

Hello no, JS is bad enough on the front-end for me not wanting to use it on the back-end.

Disclaimer: I don't think PHP is better than Django, or vice versa.

You sight performance as a reason to steer clear of PHP, then say Django is your go to. Fair enough.

I just bypassed the Django orm to run a specific, non complex query due to performance problems. Let me state now, there was NO other change to increase throughput, than to bypass the Django orm. But this does not mean I will now go and say don't use Django, or python or orms, just that one developer's performance boost is another devs bottleneck.

At least, you can, without jumping through loops, with clear code and tests. Pascal and basic were my first languages, then Php then perl, java and later python.
I've even used good old pascal in a recent past but python is hands down the first choice for writing clean and understandable code.

Interesting, can you describe the situation? I've had some of those issues in the past few years but nothing since you can do custom lookups and function calls.

The situation related to a server to server API call which was essentially taking data for a local cache. High request rate, you could make an argument here that we are pushing Django outside of its intended use, we certainly asked the question. You can also say, it is actually a cascading failure of sorts, which caused page contention on our database, which was Aurora AWS high throughput db. So it essentially boiled down to the fact we needed to traverse a join table, 40mil plus rows, so the db design is also to blame, but, the killer was when Django had to populate all the data into Django objects, then serialise it all out again as json. The reason being, it was holding connections so we ended up with serial, not parallel requests, limiting throughput. So we worked our way from standard python query sets, tried Q objects, Raw queries, but under the hood, they all still populate objects. The final result worked out to be interesting, because we took a raw Django connection, executed SQL, we then mapped that to plain old python objects, no framework inheritance, and serialised out the data using standard python. We reduced the total time for this query from 6min to 16s. So yes, we gave up on Django protection for this one call, but performance was the tradeoff. We still use it almost everywhere else and for user facing stuff there will be no performance issues, unless they have some lightning click finger which can cause db page contention.

Oh, right I see. Didn't .values_list() help?

In this case no. We had been using that to produce a list of IDs from the join table, which would feed into the other query, but it was still blocking the db. Never could work out why, it still uses QuerySet underneath, but we thought it should have been way faster than it turned out.

Performance is not a good reason to steer clear of PHP, considering PHP7 is significantly faster than Python.

I agree. I'm not sure what you mean by 'faster' but as long as your software meets its operational requirements then the language becomes a matter for the team to decide.

I was referring general performance, an example:

But yeah really, as long as your software meets its requirements it's not even an argument. If it were like that everyone would be writing web apps in C++.

Although that won't stop people from loving to hate it. Not saying it's the best language out there, but I remember being pretty horrified by the public bashing before starting my first job with it. I quickly found out that it wasn't even remotely as bad.

And now with PHP7 it's evolved pretty nicely. Though to be fair Laravel helps it a lot.

PHP has really gathered the hate of many people for some reason.

Interestingly enough, a lot of those people have accepted Javascript..

Sure, and some of them are better than PHP, some of them are worse. There's a lot of comments on this page saying "use something other than PHP", but it would be a lot more helpful if people shared their favourite alternatives, and why they think they're worth learning for someone who already knows PHP.

I know there are more options, but the fact remains that PHP works very well in its space. And that space is wide, judging by the fact that it's used for all sorts of web apps, including APIs.

If you ask for my personal favorite, I always go with Django (so Python).

The prime reason is the ORM. It has become so powerful that I rarely need to write SQL anymore (even for very complex queries). It also provides introspection onto the data model, which allows automated forms, admin and so on. Basically any CRUD backend is done instantly. But most of all there is a migration system that gives deterministic results and works really well with versionning and branching.

Also there is the Django REST Framework which uses the introspection abilities to make REST APIs dead simple.

Then comes all the nice "batteries included" things from the templating engine (which inspired Twig) to standard RSS or sitemap apps you can just configure to go.

And finally there is a lot of apps that will help you for common tasks, like Wagtail which will provide a very flexible CMS or Oscar which does e-commerce. All those things are not in the form of WordPress/Prestashop/etc. They are developer-oriented toolkit so you can match your client's needs while leveraging pre-existing building blocks.

Basically, everything is simple and works well. That's why I like it.

Well that sounds exactly like Laravel. Perhaps you should give it a try.

I'll admit that Laravel looks like a nice piece of framework. It has a lot of good things and certainly is not too nerve-wrecking to work with.

However, it sounds a lot like Django of 2010. Just to pin one single issue down, the migrations system doesn't play well with branching. That's a serious no-goer.

sandor11 - Why do people constantly compare a framework (django) to raw php and feel that is a fair comparison? I see "x-framework vs php" statements 50x more often than I see "x-framework vs php-framework" statements.

Rowan Collins asked for people to "share their favourite alternatives" to PHP. Rémy replied with a framework once again and compared features of the framework like ORM to raw PHP! WTF? There are many PHP frameworks with ORM's and also standalone ORM libraries! Guess what Rémy. I don't use php frameworks but "I rarely need to write SQL anymore" also. And then Rémy goes on to list more libraries and frameworks as reasons why python+django+lots-of-frameworks is better than raw php by itself. That makes no sense.

Specifically saying Laravel's migration features are inferior to Django's is the only fair and sensible thing Rémy has said.

code of conduct - report abuse