For a long time I have seen that the developers around me hate PHP, and I still do not understand why this happens.
I don't like some PHP stuff, but that does not mean it's a bad programming language ... I think every programming language has its own purpose, so instead of starting to complain about "why PHP does not work for me " I think we should spend more time comparing different programming languages and choose the one that achieves the goal of your project.
What is your opinion?
Top comments (37)
First I want to say the article "a fractal of bad design article" is a good reference. A complex tool gives the possibility of a complex solution. You don't need a complex tool to create something complex. Complexity should lie in the business code, not the framework/language. This is why Go is gaining momentum but it's also a hype (because Google).
PHP as a coding standard only since 2012 github.com/php-fig/fig-standards/c...
PHP had outdated tutorials for years and the "standard" framework Zend was/is paid so it was rarely used. So it also trained programmers with bad practices.. like common SQL injections.
As example, Python was there as long as PHP but from the the start they decided to impose a coding standard. Python PEP-8 exists since 2001. You don't hear much people complaining about Python because it was done simple and with a standard from the start. The Zen of Python is the best thing you can have in programming in general even I think.
I second that, php community is immature, there’s still a ton of bad practices advertized as good/applicable solutions, progress of this platform is slow and innovation is not there at all, what is it php community actially introduced, and not borrowed? I am a php dev btw, but hey folks, lets be realistic, there is NOTHING exciting about php
Well, being able to just
$username = $_POST['username'];
was pretty much exciting in 1995, don't you think?
Because people use Y, and it's clearly better than X.
All languages have strong points and weak points. These pros and cons also vary based on domain: there are some places where PHP is useful, and other places where it's utterly useless.
Every coder should know multiple languages. I think it's a legitimate concern that if somebody knows only PHP* that their coding knowledge is somewhat limited. There are so many differnet constructs in other languages that you might just never see in PHP. Granted, it, like all languages, evolves over time.
*My concern applies basically to any language. You can't know just one and expect to be a good programmer.
I second that. Also changing levels and paradigms also helps a lot. For example, if someone uses PHP on a day to day basis, learning something like Scala or Clojure would change his way of thinking completely.
It's still easy to find, though.
Some people do legitimately get burned, though. Languages all have landmines, even strongly typed languages.
PHP is the best worst programming language.
I love it, and hate it too.
Thats applicable to any language!
I agree with you, most of the time, when we "love" a programming language or something else, we also hate it or get frustrated, because we always find something difficult that we can not find a way to solve it unless we spend a few minutes/hours playing around with a tedious documentation... XD
Actually no, because if you do a website in php and if you need a forum, the issue that you will have is that you will consume a lot of time choosing templates and plugins.
There is not chance of choose in another language for web related apps.
Maybe you need to do a plugin for auto add topics that need to take from the news seccion of your site for the forum, and you will see the php syntax and think uuuughh I hate this, but then you will find a this_is_exactly_what_i_want_to_do() command build in php and you will love it, the you will see the code and think uuuughh again.
Since all programming languages are not the same. That statement is probably not accurate.
I don't mind using it as long as it does the whole job.
I wrote my opinion there :)
Programming languages are tools. Some languages are more suitable for a particular domain.
PHP is a tool for a fairly narrow problem domain, albeit an incredibly popular domain.
For all the PHP haters out there, the next question ought to be "Well what would be a better tool to use in this problem space?"
To quote Bjarne Stroustrup, "There are only two kinds of languages: the ones people complain about and the ones nobody uses."
My primary programming language is C++. I have a love-hate relationship with C++. I've been using it for the last 27 years.
When I consider my project, there is no ROI in rewriting the application in a different language. It would take years to port. Assuming the entire team was working on such a ill-advised rewrite.
Be that at it may, as a thought experiment, I've considered what would be suitable alternative languages that would be better than C++ for my project. Maybe... C, Go, C#, F#, Scala, Clojure, Swift, D, or Delphi/FreePascal/Oxygene. That's a big "maybe", and for each alternative language to C++ there are pros/cons tradeoffs, rather than clearly superior language.
PHP is likely in the same situation. What would be a viable alternative languages to PHP, for problems which are well suited to PHP's wheelhouse?
Ruby on Rails would be one reasonable alternative to PHP.
I'd probably choose Elm.
Otherwise, Python on Django... because I dislike both Ruby and PHP, and I like Python. But that's just me.
However PHP has a certain appeal* that Ruby, Python and Elm don't have.
* not to me; but I can see where PHP lures kids into the van.
I think it is a mixture of the language and what people did with it. It provides a really shallow barrier to start programming, so a lot of newbies started doing stuff with it (I did as well) and so the "average code level" is or was lower. And I think that's just natural, because we all started a some point and (hopefully) learned a lot since then. But the impression from these early days can stick in people's minds.
The second part is, that the makers of PHP were learning how to create a language while creating one as well, which led to entry and removal of magic quotes, auto variables etc. and also inconsistent names and parameters for the functions (search with needle and haystack or array and item?).
And when the people have set their mind and start making jokes, it is hard to give it a fair chance again. That being said, I personally prefer other languages today, with static typing and a carefully designed set of language features. But PHP today also is not PHP of the early days anymore.
Most of PHP bad rep comes from wordpress and beginner programmers, I think. Wordpress might work, but it's literally PHP4 old. It still contains shims for PHP4, and overall it's behind at least 10 years.
I complain about PHP a lot, but I don't hate it. In fact I'd say the opposite; I find it very hackable, it is fast, it's a free open field unlike other languages that instead drag you in their quirks with no way out. Many times I've considered switching to another language, but there was no clear winner over PHP.
Well i think PHP has improved alot.
But the first project working with it made me disliked it.
For example there was lack of consistency or standards, like strcmp and str_split, it makes it seem like the whole thing was just wrapped together with duck tape, it’s very different from languages that show just how much tought and effort was place into design them
It has come a long way, and weird naming it’s still there (for legacy reasons), but i heard that everything underneath has changed and improved a lot.
JS i always liked it, it has it’s flaws but i like it, however the lack of a proper INT or other numberical types still bugs me.
I want to point out, that many of the hating people got to know PHP sometime in the mid 2000-s, when it slow, poorly designed procedural language with no real company or driving force behind it. It didn't have any coding standards nor real OOP support. It lacked a lot of features that every decent programming languages have. It was vulnerable to SQL injections and XSS attacks. Tutorials supported bad practices and had no consistence at all.
Now PHP's a completely different language. It's got great object oriented support, allowing you to use classes, traits and interfaces, static methods and many more. There are a lot of design patterns commonly used by many MVC frameworks making web development a breeze. When you use modern mainstream framework like Laravel, it feels almost like RoR and it's surely feels better than Django to me.
ORM, ActiveRecord, Composer package manager, lots of great Symfony bundles - all these makes writing performant PHP solution with ease. PHP-FIG delivers coding standards that make our code look consistent. The performance of PHP 7 almost equals Java's one in single threaded cases making it unbeaten among interpreted languages.
You got two categories of PHP “haters” :
I like to think that I am part of the pragmatic group, which only is my opinion really.
Exactly like a lot of ideas that people say about programming languages, for example :
As you guess, I do not agree on those points, however I have no formal proof so I often make the point about assemblers and how if we had not evolve those, we would be still required to know and handle whole new categories of issues while writing a form … but not today, at least not in depth.
If somebody wants to use PHP to write code. Fine by me. In truth as long as I don’t work on it or that I was not ask about my opinion, it is not my problem. Perfectly useful software have been done and are being made in PHP, so It works. What bother me about PHP, is its cost.
I used to code PHP, so I have experienced that the fast workflow, the stateless request/response model built on HTTP, the great community, the very well built Web Frameworks that exist.
I have not experienced first hand but I followed efforts made by Facebook and PHP7 to greatly improved the ecosystem.
I talk about ecosystem because languages are useful also because of it, talking or using about languages without including the ecosystem, is not worth the time. This lesson has been learnt, that’s why Go, Rust, Typescript ... have also a strong focus on tooling and communities to speak of some ecosystem aspect.
My PHP « hate » comes from everything you have to KNOW about it, to maintain and evolve a large code base, in short PHP scales badly.
Please avoid talking to me about design patterns and good practices. Those exists in all languages and using them in PHP does not solve my issue in the least. That’s why Facebook who has no choice than to live with PHP, invested so heavily in this (we can agree that they know good practices and design patterns rights ?), that’s why PHP 6 does not exist and PHP 7 offers nothing than Facebook already provided (for the most part).
This was true (to many people, me included) : eev.ee/blog/2012/04/09/php-a-fract... maybe less so today but I seriously doubt it.
This is why, when I finished to figure out what is the problem I have to solve by prototyping in whatever language fits my workflow or whatever method of my choosing and that I have to choose my tech Stack, PHP is never on my list. It cost too much to maintain in the long run.
In short : McDonald fast food is popular. It does the job but in the long run, it will KILL you.
Even if PHP have several problems (random parameters order, loosely-typed, etc), it's the best language for the web. Without any PHP framework, you can render html page and all functions and classes are web-friendly. Try to do queries to Mysql database, encode datas to Json or submit a form in a browser with any other language, you will understand that I say.
FYI, another explanation of PHP-hate from Coding Horror: The PHP Singularity
Some of the issue could be the fact that many companies are bandwagoning into it (and other techs) just because that's what FaceBook or WordPress used, rather than weighing the technical merits of their choices. (Otherwise they might have noticed what FB had to do to PHP to keep their websites going, and this ReasonML thing going on now.) Now it may make total sense for the situation, like the bootstrapped startup does WordPress plugin dev to pay the bills while working on their own product. But the stigma is one of group-think.
I had bad experiences with maintaining applications written in older versions of PHP. I am not likely to use PHP for anything new, but some people I respect use it to good effect. Teams have to use whatever makes sense for their situation, regardless of popular opinion.
I agree with others here that people are really good at finding reasons to justify why we do the things we do (even if they are mostly arbitrary).
That being said, if you are interested in an in-depth criticism, Google turned up this one which seems pretty comprehensive: PHP: a fractal of bad design.
The article you linked was written in 2012. Some points are still true, but currently the core is waaaaay better, more consistent and predictable. Still, for backward compatibility, some inconsistencies remain.
Some comments may only be visible to logged-in visitors. Sign in to view all comments.