
PHP Sucks - saurabh
https://evertpot.com/PHP-Sucks/
======
trebor
I started freelancing in my area doing Ruby on Rails, and found it far harder
to maintain a project. I also found it harder to acquire clients in my area
for new RoR development.

More work was available locally with PHP. Clients were more willing to pay.
I've done a ton of things in WordPress that shouldn't have been, "to save
money". And I've done greenfield development with CodeIgniter, Laravel (v3 and
v5), and a customized set of the Symfony components. I've also maintained and
improved brownfield projects that were outsourced.

I'm _very_ tired of hearing that PHP sucks. PHP is a good language. And in my
opinion, it has fewer ways to sabotage your own project than any language with
monkey patching. PHP7 looks really awesome, and the community has been
upgrading quickly toward it. PHP has always had best-in-class documentation in
my opinion.

More often it's the programmer who sucks, not the language.

~~~
segmondy
Give us a break, as a language PHP is a terrible language, and yes I do
develop and get paid because of PHP, and I do so for the same exact reason you
listed. It pays the bills and does so handsomely too.

I have 20 yrs of programming experience in various languages than I care to
count, as much as 20! So I do know my languages. From an academic perspective,
PHP blows! But from a practical standpoint, it's a tool. It get's the job
done, so long as you know it's quirks, you can avoid them. It's much better
now with the OOP support and with PHP7 supporting scalar type and return types
declaration. It's going to even make it possible to develop more robust
software.

I'm indifferent to hearing about PHP sucking. So people say it as a put down.
Perhaps they groovy or scala. I really don't care. It pays and that's all I
care about. When I engage in my own personal projects, I never use PHP. PHP's
documenation is not bad, but best-in-class? Please! With that said, I agree
with your last sentence, in the sense that a good programmer can get more done
with a bad language like PHP than a bad programmer can get done with whatever
the hell one chooses to consider a good language.

~~~
ams6110
Is it any worse than Javascript, if we're honest?

~~~
pdpi
Yes it is, and I really don't like JS much to begin with.

There's seriously wonky things in there like the associativity on ?: being
wrong, and == being even more broken than in js. There's order of arguments on
array_map and array_filter being inconsistent. It's not that there's a massive
flaw in there that kills it, it's death by a thousand paper cuts.

~~~
mywittyname
PHP's massive flaw is that it does one thing very well (web-dev), but does
everything else rather poorly. It becomes the default choice for projects that
start out as a web front-end, but then gets used in other situations where
it's ill-suited. A lot of PHP projects have components that are hacked
together and work, but are confusing and less-than-ideal from a design
perspective.

Threading/asynchronicity comes to mind. I've worked on a few projects that
started out as a web-front end, but then needed to do some background
processing. Eventually the background process needs to be multi-threaded and
the choices are: rewrite your code to support pthread's wrappers classes, use
fork and shared memory segments, asynchronous web requests. All those
solutions work, but they are much more complicated than the same task would be
in most other languages with native threading support.

------
leftnode
I used to feel the same way a lot of times, a shame it seems for being a PHP
dev. Now, I don't care. I've been using it since 1999, and I use it to get
stuff done.

My customers and users of my applications don't care what it's written in.

But, you should definitely learn more languages as a programmer.

> And to anyone considering programming as a career, or trying to get into
> it... stay away from PHP.

This is the part I disagree with the most. The language is getting better and
better with every release. It's incredibly fast, much safer to use (the Error
exception type, scalar static type hints, all the garbage from the early
2000's has been removed), and easy to work with. The ecosystem (with the
introduction of Composer) has _completely_ changed and reinvigorated the
language. It's easily one of the best package managers out there. I definitely
recommend giving PHP a look or a second change if you've written it off.

~~~
treehau5
Unfortunately, the issues aren't with "new" PHP, it's with the mountains of
"old" PHP code that invariably finds its way into your project.

Also, having had to maintain a Wordpress site the past few months, may God
have mercy on all daily Wordpress devs. I truly admire your stalwartness now
in putting up with that.

~~~
tluyben2
The problem is that clients really want WP a lot. Bigger and bigger companies
currently and for most of their departmental sites. This is WP shoe-horned in
a full site CMS function. The thing is, users seem to love it. I would wager
that if you just rip out the guts of PHP and leave only the frontend (the /wp-
admin part that is), but leave it 100% as it is and write a solid backend in
Django/Rails, you have a winner. The problem is that when people attempt this,
their own 'taste' comes in and it always ends up being a vastly different
frontend which then users don't want as it's not 'the same as WP'.

Before anyone says it; sure some users use WP for the themes and plugins; we
use some of them but we are very careful using plugins. They have to be
rocksolid for many years, actively supported and we have to have reviewed the
code. Next to that they have to add something significant; installing a plugin
for some social buttons is very much not worth the pain of updates / security
breaches on a 100k+ (+ SLA) project. And so in the end we end up using 4-5 the
same plugins for projects and the rest is either not needed or easy to
implement anyway. So the hero implementing those guts in Django/Rails could
also implement those plugins. I believe you would have something safe for the
enterprise. Until then, they'll just use WP and trust admins/coders to fix the
issues.

~~~
mtberatwork
> I would wager that if you just rip out the guts of PHP and leave only the
> frontend (the /wp-admin part that is), but leave it 100% as it is and write
> a solid backend in Django/Rails, you have a winner.

I would love for WP to exist as only an admin interface to a clean, backend
data store. Unfortunately, the problem is the database schema that WP ships
with and the way WP handles data. It's almost impossible to get data out of WP
press without using its lackluster DB "abstraction" layer and running the
fetched data through its many obscure filtering mechanisms. To top it off, WP
smashes everything into a handful of tables and makes doing normal,
straightforward relational looks up (as any sane schema would allow for) a
complete nightmare. Alas, when you go the WP route, your data is very much
dependent on WP (and by default PHP).

Any organization that uses WP for an extended period of time and builds up a
non-insignificant amount of data will run into this wall, guaranteed. If you
truly value your data and your project is anything beyond a personal blog that
you'll give up on in 6 months time, do yourself and your organization a favor
and find an alternative solution. If you must use WP, use it as what it was
originally intended for: a blog. It's not a framework to develop a complex
application off of.

~~~
agentultra
As the person who wrote a patch to import data from WP to Pelican I agree.
It's a complete nightmare. In order to properly maintain the formatting from
~6 years of blog posts I had to literally translate the PHP code that parsed
the database representation into Python... which is some really gnarly code.

------
cdnsteve
The thing that hurts PHP the most is lack of structure and patterns used in
the most popular projects. These popular projects are usually where the bulk
of work lies, where developers point to when they're considering PHP. When
juniors start they're typically working on WordPress or Drupal. The problem is
that WordPress and Drupal are terrible guides of how to write a web app and
that knowledge is completely useless when you go to write something in an
actual framework. I was expecting a lot with Drupal 8 but I decided against
using it entirely after reviewing the codebase and testing it out, 7 is in no
way compatible with 8 and you have to start over.

When you step outside these mini ecosystems and look at PHP as a vanilla tool
to work or to use a proper micro/full framework you start to question why use
PHP at all? One possibly acceptable framework, in my opinion, is Laravel. The
problem is PHP outside of these mini ecosystems isn't nearly as popular. It
looks like people migrate to an entire new language like Python, Ruby, Node,
etc. If we're talking about sheer people hiring Ruby, Node and Python
typically trump PHP every time and are using frameworks - not Drupal or
WordPress. Granted there are custom PHP apps out there and some very good ones
but they're not the norm.

I switched full-time to Python using Flask and Django. It's like a breath of
fresh air. My 2 cents is if you're on the fence, figure out how to work on one
project using this new language full-time. Then you can make a better
decision.

~~~
staticelf
I used to like Laravel, but lately it feels so enterprisy. There is a lot of
boilerplate in Laravel today and it was changing too fast for me to keep up
with it.

~~~
Navarr
Have you tried Yii at all?

In my most recent (side) project, I'm doing a Yii2 website and I'm feeling
like it's not enterprisey enough. I have to go out of my way to figure out the
best way to split things apart (which, I guess is good because it doesn't
actually make that difficult for me at all - it's just something I have to
choose to do)

~~~
dpcx
I used Yii2 at a previous job. The way that it splits things out feels
horrendous. The documentation is sub-par, and I feel like I spent more time
trying to figure out why something didn't work the way I expected (from
reading the code) than I did fixing things.

I'm sure at least some part of that was the previous developer who built the
application. But there is absolutely no reason for documentation to not answer
the basic questions that seem to come up many times per day in their IRC
channel.

~~~
Navarr
My experience has been 100% different from yours.

I commonly recommend Yii and laud it's extensive documentation and "Definitive
Guide" that covers basically everything.

In my current experience as a developer, Yii's documentation is the best I've
ever utilized. Much better than any Javadoc I've googled or even php.net's

~~~
porker
What are forms and form validation like in Yii? [Have looked at the docs, but
after real-world usage]

I've used form libraries from the PHPClasses one back in 2003 through Symfony
forms now (which has cognitive overload, and is so flexible as to be
restrictive). Most business systems I write are data focused so forms play a
massive role in them - and in my developer happiness.

~~~
nikdaheratik
Validation works directly with the model and you can pick a number of ways to
check the input and have it return an appropriate error message.

The view/controller layers are very flexible and can be hooked up to anything
from an HTML template using Yii to angular/bootstrap (which is what we're
using) or another framework to handle the forms.

------
brokentone
Awkward auto-inserted blog ad after that post...

> ... And to anyone considering programming as a career, or trying to get into
> it… stay away from PHP. There’s lots of fun, interesting languages out there
> that also get the job done quick, but with a better reputation and this will
> have an actual effect on your future career options.

> Looking for a PHP developer for your next project? I'm looking for work!
> Check out my resume or drop me a line!

------
swalsh
I hate PHP too, but I write it almost every day at work. There's something to
be said for how stable it is. I spent a large amount of my career doing .net
development and deployed very rarely. It was a big day when I deployed. I
would say to my wife, probably going to late tonight, we're deploying. Because
something always went wrong when deploying.

Here, I deploy every other morning. Usually, while my coffee is getting to the
right temp. The ability to just "throw it on the server", and to take it back
if you need to make it great. There's a bunch of devs here, and that deploy
all day long every day is one of the main reasons we move "so much faster"
than our competition.

So as much as I hate how weird it is, and how frustrating it is not to have
strong typing... i respect the heck out of it.

~~~
emodendroket
That sounds like more a company/environment issue than an issue with either
language.

~~~
swalsh
The thing is different languages lend themselves to different processes. Let's
say you have the exact same bug in a web app, maybe you need to modify the
where clause in the data layer of the app (or something small like that). In
the C# version, you'll have to compile it and then push it. Maybe recycle the
pool depending on factors in the architecture. In PHP, you just modify the
file and throw it out there. Because of the slight differences, the nature of
the way work is done leads to companies designing processes around it.

~~~
jacques_chester
> _In PHP, you just modify the file and throw it out there._

We've since learned that this is problematic.

~~~
collyw
Clearly not as problematic as the C# option.

~~~
emodendroket
That isn't really clear at all.

------
imron
"There are only two kinds of languages: the ones people complain about and the
ones nobody uses" \-- Bjarne Stroustrup

~~~
mikeash
They laughed at Einstein, but they also laughed at Bozo the Clown.

Yes, every popular language has critics, but that doesn't mean they're always
wrong.

~~~
liveoneggs
Bozo's theory of unified whoopie is closer to being proved correct every day!
He will be vindicated eventually.

------
smoyer
"Developers who more-so live in the Java-dominant corporate bubble"

That's me but ... I've known quite a few good PHP developers like this author.
I've also seen horrible, horrible things - things that other languages and
frameworks simply won't let you do. A language that gives you a lot of slack
also gives you more opportunity to hang yourself. There's nothing that says
you have to hang yourself.

As mentioned, the barrier to entry is low with PHP. The combination of a
"loose" language and a newbie programmer is dangerous. And didn't all of us,
as newbs, think we were done when it seemed to work properly? So the correct
statement is not that PHP sucks, it's that many write sucky PHP. I'd rather
see everyone aspire to not sucking (and certainly not hanging themselves)
regardless of the language they use.

NOTE: I wrote a lot of PHP code in the late '90s and reworked part of a
project in 2005/2006 so I obviously don't know anything about the current
state of PHP. I'm not against it - I simply choose not to use it (at least at
the moment).

~~~
glasz
this. when i evolved from the procedural mess that were tutorials and books,
even, i watched most other programmers and/or collegues staying behind.
embedded php worked for them. little bit js here, css there... up to this day
people just don't evolve from php.

and then there's the other extreme. the overly scientific who brings all sorts
of crap into the language or the frameworks. it's justsuch a shit show.

------
steven2012
I worked at a PHP-based company and after a year of intense interviewing, we
finally decided to switch core languages and tech stacks because we weren't
attracting strong enough candidates.

What we found is that most good programmers didn't want to work in php and
most php developers were designers that learned how to code php. But they
didn't understand CS fundamentals or even a decent idea how to code. They
could cobble together a web site that worked and even looked great, but they
didn't know how to write maintainable, modular code.

It got to the point where I would ask the candidate to merge two sorted arrays
and 70% couldn't do it properly.

In terms of language, I thought php itself was a surprisingly productive
language. I just quit though because I didn't want to be known as a php
developer because of the stigma and there poor quality of other php developers
that I encountered.

~~~
justinhj
I found that if you advertise for php programmers you get mostly people
working on fairly simple web applications. The more talented programmers would
apply when we emphasized that we use php for the front of the backend systems,
but we also use Go and node.js for more realtime parts of what is a suite of
micro services. once we got them in the door they were happy and productive
php programmers

------
mschuster91
> It sucks that every HTTP request is a whole new instance of my PHP
> application.

In fact, this is one of PHPs greatest strongs, not a weakness! NodeJS, Ruby
and especially long-running Java web apps easily turn into huge memory leaks.

PHP, on the other hand... not so much.

> PHP is generally not approved in the enterprise

I believe OP is looking from the wrong angle. There certainly are successful,
enterprise-used PHP applications (e.g. SugarCRM, Drupal, Typo3), so it
certainly is not a problem of approval.

IMHO the real problem is the total dominance of (extremely!) outdated
COBOL/FORTRAN/(other mainframe stuff), SAP and Java (hello Lotus Notes!)
applications in business.

------
rob74
"The 2016 StackOverflow Survey puts PHP developers as the least paid" \- which
is very unfair. I think PHP developers should actually get paid more as
compensation for having to put up with PHP on a day-to-day basis, but that's
just me unfortunately...

~~~
donatj
I've been doing primary PHP for almost ten years and people honestly just
throw money at me to solve their problems. I really don't know how I make as
much as I do; I hit the point where I made more than my parents combined a few
years back and that made for a strange reflection point in my life.

Basically for all the _decent_ PHP developers I've known in my life money has
never been an issue.

~~~
sdoering
Not being a developer, but having had lot's of great moments with them, I can
say, that in my tangenital environment there are lots and lots of school
taught mediocre to bad PHP devs, that always find jobs, but on a very low pay
grade (and rightly so).

So maybe there are lots of mediocre php devs pulling the average down?

------
arenaninja
This is one of my fears, as I work primarily modernizing PHP applications.

I think it's possible my salary has hit a plateau. Most SMBs do a false
equivalence between PHP developers and junior developers. One place I worked
at the owner used to brag about hiring people starting out for $12/hr.

The thing is, with my experience in PHP it's easier for me to write secure
code in PHP than anything else at this point. I can do it really fast, too.
I've internalized a lot of micro-optimizations in PHP. Project scaffolding on
a greenfield project ends up looking a LOT like Express if you use the Slim
framework. And I stay away from PHP if I need concurrency (and so far, per
business requirements, I haven't). I can scale it really well, and I rarely
have to worry about memory limits like you do with the JVM.

I'm hoping for a breath of fresh air with PHP7, because I'm not entirely sold
on the current runtime alternatives - JavaScript, Python or Ruby. I've been
trying Scala and I write less code than Java, but definitely more than PHP.
It's also hard to jump into the Play framework if you don't grok the 'weird'
operators. I also find that it's easier to hang yourself with incompatible
components/libraries. So far it's fun to write though, but I don't think I've
seen anyone hiring for Scala in my town.

------
agentultra
The vacuum of negativity is vast and relative. Who cares if Java developers
think they're better than PHP developers? From the perspective of a C
developer neither can properly allocate and manage memory effectively if their
life depended on it (heap-based programming, lolzors).

In my experience the modern PHP developer is characterized by a crippling
self-consciousness. When I meet someone who is a fellow developer and tell
them that I do C and Python and stuff... they usually begin with a bit of
self-deprecating humor: _I do PHP and stuff, not real programming like you,
blah blah blah_. I feel obligated to correct them.

The best thing you can do for yourself as a programmer is to not pigeon-hole
yourself to a single language regardless of how tempting it might be from an
economic/marketing perspective. Learn maths and get good at identifying
problems and simplifying them. Become an expert in at least one general-
purpose language and one specialized one for sure... but remember to think
like an engineer: these are just the brick and mortar of the job! You still
need a good mind for design, creating blueprints, and the experience to make
informed trade-offs.

PHP is good for many things. Deal with it.

------
tybulewicz
IMHO the best part is the footnote: `Looking for a PHP developer for your next
project? I'm looking for work!`

~~~
vans
LOL

------
gregoriol
It's not about a language or a technology, it's about what you do or can do
with it...

All trendy technologies might be replaced anytime (hey React, Go, I'm looking
at you!), one day they are very cool, the next day nobody maintains them and
everyone talks about another new cool thing; how many of these have we seen?

New cool stuff are important to know, explore, test, use because they bring a
lot of interesting stuff, but often they only address some use cases, as they
have been made by a team with specific needs (looking at all hundreds NoSQL
databases?); php and some others (like ruby) are stable, well known, cover a
vast area of use cases with very well made and long thought frameworks and
tools (symfony, doctrine, phpstorm, ...).

You are always free to follow trends, like with clothes, or just choose the
best thing for what you need to do. You'll definitely find jobs with any of
these, if you are able to explain why they are good for what you are doing.

------
Vozze

        I hate it, because it makes me feel defensive. PHP in their minds
        is much worse than it practically is. Im tired of defending
        PHP, Im tired of being set back and having to proof my compete
        by virtue of being a PHP programmer.
    

For me it is the other way round. I like it when journalists ask me what super
advanced tech stack I use. When I get tweets about what libraries I use in my
projects. And students mail me questions about the technology behind my
Startup. And I can reply "It is just your average LAMP stack".

------
CiPHPerCoder
What Evert is referring to (the "reputation" of PHP and people's reactions) is
even worse in infosec. I very frequently get accused of being a charlatan
simply because I write PHP.

Some people openly question if a PHP developer who understands security
_exists at all_ :
[https://twitter.com/MalwareJake/status/506488937096183808](https://twitter.com/MalwareJake/status/506488937096183808)

This is silly when you think about it. If so many systems run PHP, wouldn't
you _want_ your infosec people to know PHP and work with it more often? Why
are we, culturally, encouraging such a blind spot by ostracizing folks who
know it well? That part never made sense to me.

This conversation plays out more frequently than I like:

    
    
      Rando: Hahaha PHP security is an oxymoron.
      Me: Okay, then hack paragonie.com. It runs PHP. Logically, you should
          be able to hack it _just for running PHP_ if PHP is so insecure.
      Rando: But that website's mostly static content!
      Me: Yes, but it runs PHP. So it must be insecure, right?!
    

So far, despite giving people permission so the prospect of CFAA convictions
don't discourage them, none of these "PHP is inherently insecure" folks have
succeeded. I wonder why. :)

TL;DR - A lot of the hate against PHP is founded on ignorance and peer
pressure. Be open to constructive criticism, of course, but a lot of the hate
you'll hear is bullshit.

~~~
dnet
My company does penetration testing and most of the projects involve web apps.
Our clients use PHP, J2EE and .NET, and after 7 years of operation, we clearly
see a trend where the number and severity of security issues are highest in
PHP apps, lowest for .NET, with J2EE in the middle. Of course, there's the odd
secure PHP app and the .NET project with gaping holes, but the trend is
obvious.

So it's not peer pressure, we actually have data to back this up, and if you
think about it, the whole thing boils down to motivation. Sure, you can write
secure and insecure code as well in any language/environment. But defaults are
powerful, and it makes me feel sad every time I have to write in reports that
"you should've paid attention to opt-in to the secure solution every time you
do X" vs. when we do demos to developers and we have to work really hard to
disable every protection built into ASP.NET. (And no, I don't like Microsoft
at all.)

~~~
CiPHPerCoder
Please tell me more about these PHP projects, if you have the data available
to you.

* Did they support EOL'd versions of PHP?

* Are they legacy WordPress/Drupal/Joomla projects that haven't been updated in years?

* Are they in the "we (didn't use a framework|rolled our own framework) and used the mysql_* functions" league?

* Did they attempt to do something weird/crazy (i.e. store all session state in an encrypted cookie instead of server-side like normal, but forget to authenticate the ciphertext)?

Those are the kinds of things that I rarely find in modern PHP projects.

One thing I think Evert neglected to mention in his post: There's definitely
an ecosystem problem. Incidentally, I've been working on cleaning it up on
multiple fronts:

* Improving the quality of information developers will find via Google search or StackOverflow

* Writing blog posts that address security concerns e.g. [https://paragonie.com/blog/2016/02/how-safely-store-password...](https://paragonie.com/blog/2016/02/how-safely-store-password-in-2016)

* Improving the security of the tools and frameworks developers use

* Working to improve the language itself (part of the reason why PHP 7's CSPRNG functions don't fail open is because a few of us were very vocal on how/why that would harm security)

~~~
dnet
I know little about most of them, since we did penetration testing (simulating
what could an attacker over the 'net do) most of the time, as few of our
clients have the budgets for a proper source code review. No CMSs were used,
we had one Wordpress, but that was actually almost perfect, since they kept it
up to date. These projects were custom-made business applications, not
"dynamic" web sites.

Frameworks were sometimes used, although their effect on security is somewhat
baffling at first sight -- and this is regardless of the platform, although we
found most issues with PHP and J2EE. Sure, when you use the framework for
security-critical things such as constructing SQL queries (SQLi) or HTML
output (XSS), things work quite well. However, since most developers don't
think about these issues, the single time they have to "escape" from the
framework, since it doesn't (or they just think it doesn't) support a certain
scenario, they don't know about all the things PHP and in smaller ways, J2EE
requires to do for security.

Of course, this way, the framework protects 9x% of the application, but the
asymmetry of security is that the attacker only needs a single vulnerability
while the defender must patch it all.

~~~
CiPHPerCoder
Groovy! Thanks for the insight.

I'm not surprised to hear that custom-made business applications fared so
poorly. Back when I worked for a telecommunications company, I saw some of the
_worst_ code imaginable endorsed by corporate and deployed to production with
wild abandon. I reported no less than 10 vulnerabilities in my first day with
a new codebase and they were all ignored. My boss took me aside and said,
"There's some politics going on right now, just keep that in your back pocket
in case you need to bring it up later. Now's not the time."

------
chriswarbo
I agree with the sentiment that, compared to other languages, all else being
equal, PHP-the-language sucks; and also agree that all else is _not_ equal,
since PHP has a massive installed base, infrastructure support, etc., and that
the balance can often tip either way. My first programming job was in PHP,
which was used _only_ because of its ubiquity on shared hosting (we even
maintained support for PHP 4, when PHP 5.3 was current).

Personally, I don't see much point in arguing the merits of PHP compared to,
say, Python, Ruby or Javascript, since those languages are so similar:
procedural scripting by default; opt-in use of OO as the happy path for most
libraries; functional programming possible, but an uphill struggle WRT APIs,
tailcalls, language cruft, etc.

There's also a lot of interbreeding in those language's ecosystems, so there's
rarely a killer library/framework/app in one which doesn't have a few carbon
copies in the others. I would recommend developers in those languages look at
what the others are doing, but I don't see much point in switching between
them as an end to itself; go for it when convenient, but nothing much will
change (e.g. I was heavily into Python, but fell into PHP dev roles
commercially).

The more interesting comparisons are to be made with languages/ecosystems
which have a different philosophy, e.g. Java/C#, Haskell/ML, Lisp/Scheme/Lua,
C/Go/Rust, C++/D, Smalltalk, Forth, etc. Those kinds of comparison have meat;
they're not just bikeshedding about which syntax to write imperative
procedural/OO scripts in. I commend the author's choice of learning Go
(although I'm not familiar with it myself).

I think the procedural/OO scripting languages will be around for a while to
come, but I think their niche is in public-facing applications (usually Web
sites, but Python certainly has a heritage of desktop GUIs and CLIs).
Certainly the use of REST services is making it easier to use languages for
those jobs they're good at; for example, using Go for data crunching, while
Web site rendering is done in PHP.

------
Gnarl
I come from a Java background and right now I'm working with some PHP. As a
tool for websites, it is as such, OK. It feels a bit messy and "ADHD" at the
core, but for non-critical stuff its acceptable. With "non-critical" I mean:
systems that won't kill anyone if they fail. See, one of my early projects was
designing and building control systems for a huge pharmaceuticals factory.
Errors, in either logic or data, could literally end up killing someone.
Testing became 2nd nature. Since that experience, I've evaluated programming
languages by how robust their error-handling mechanisms are and how much
rigour is enforced at compile-time. In that arena, I think Java is the most
mature. In critical systems, checked exceptions -are- your friend. One glaring
problem with PHP is its freak error-handling. PHP can get the job done, but
don't trust your life to it.

------
staticelf
I left PHP for C# and JS. I've been burnt so many times from the tacky
standard library it's not even funny. Coding php in a large application is
both boring and hard. XDebug barely works and is hard to set up.

Still, PHP is so goddamn cheap it's not even funny. But I recognize everything
the author is describing.

~~~
romanovcode
Running C# (.NET Core) on DigitalOcean $5/month droplet too much for people?

~~~
rplnt
PHP is also cheap to write (in theory; the programmers are cheaper).

~~~
tluyben2
Those programmers is where the reputation comes from.

------
ishener
The author's biggest mistake wasn't betting on PHP, it was betting on a single
language. He should have learned more languages a long time ago, just to
expand his set of tools, and maybe way of thinking.

Besides, learning a new language is fun and not that hard... They are all
pretty much the same...

~~~
tremon
... until you try to switch paradigms (e.g. to Lisp, Erlang or Haskell).

I agree that learning new languages is very useful. But as analogies go, going
from PHP to another imperative language is more like switching dialects than
learning a foreign language.

~~~
vans
He can switch to a static typed one. I don't know php but it should be a huge
mindshift i guess

------
tszming
Sadly, most of the complaints to PHP as a language also apply to JavaScript
(even worse IMO), but seems like people are more forgiving to the JavaScript/
Node.js community nowadays.

~~~
collyw
You don't have much choice on the front end. There are better choices
available on the back end.

------
agentgt
Programming with PHP is sort of like eating/buying McDonald's food.

Yes it gets the job done and you can argue it is readily available, a calorie
is a calorie etc....

...but the reality is even _" new"_ McDonald's is not terribly good for you
and people will judge you if continuously eat there (I'm not saying that is a
good thing but it does happen. Just try asking coworkers to go there with
you).

And that is the point. The OP doesn't like to be judged but the general
consensus is PHP is _" probably"_ not good for you long term (regardless of
the caveats of the language one cannot argue that other language programmers
are generally paid much higher).

Imagine it this way. Imagine a fitness professional saying: "you know calories
are the main thing that make you fat so I eat a small McDonald's meal and fast
the rest of the day".... what would you think of this fitness expert... would
it honestly not affect your judgement?

I'm not saying PHP is bad... I'm just saying I understand the behavior the OP
doesn't like.

------
datashovel
Such a tiring debate.

This is what a function call looks like in PHP:

    
    
      myfunc($arg1,$arg2);
    

What a mess, right?

Functions can represent any subset of computation within a program, or in some
cases a function can represent all of the computations of an entire program.
If you're hung up on small nuances of a language, you're probably just not
doing it right. That's not a bad thing. A lot of people find themselves in
this position, but the bottom line is you're probably just not writing your
programs with the correct lower level abstractions.

That's it. It's not magic, but it's not always easy either. You shouldn't feel
bad about it. Just keep trying and one day you'll realize that very little of
what makes a great programmer has anything to do with the language you're
using.

NOTE: This isn't in response to the author. They appear to have a strong
reputation within the PHP community. This is really just a general response to
all of the PHP hate in this thread.

------
jccc
_> We’re not taken as seriously, and we’re being paid less. The 2016
StackOverflow Survey puts PHP developers as the least paid. Hilariously that
position is shared with “LAMP” and “Wordpress”, both of which are also PHP._

The author didn't explicitly state it as a causal relationship, but doesn't
this have more to do with supply and demand than respect?

It's true that if you're a guru in a more esoteric language you're going to
earn more respect than a guru in PHP (although if you're really a guru in PHP
you're probably also pretty good in more respected languages).

But it's also true that your skills would be in much higher demand for any
available jobs in that esoteric language than PHP skills are for its available
jobs.

[EDIT: I suppose an argument that cuts the other way is that PHP projects --
regardless of what the employers know or care about the language -- tend to be
lower status and lower paying than those built on more esoteric or more
"serious" languages.]

------
mfonda
> A big part of this issue is that the barrier to entry in PHP is so damn low,
> almost everyone can start hacking wordpress templates. For many people, PHP
> is the first programming language they try without formal education.

This really hits the nail on the head. A lot of the criticism of PHP comes
from people who have never worked with a good PHP codebase and have only seen
some of the many examples of awful PHP code out there. A well written PHP
codebase is really nice to work with.

> The problem I have with PHP has nothing to do with the language, it’s its
> reputation. I can’t count the times I’ve started a conversation with a
> programmer who upon finding out I primarily do PHP got awkward with me.

I've experienced this many times as well. I think the previous point is really
the root cause of this. People have a lot of misinformed ideas about PHP due
to the sheer amount of really low quality PHP code and "developers" (i.e.
people with no experience just trying to get shit done).

------
serg_chernata
Can we just stop with these posts? It's like saying "ice cream sucks". That's
just like, your opinion man.

~~~
rplnt
> That's just like, your opinion man.

I don't think you can argue it's just an opinion. I haven't seen anyone argue
that php isn't badly designed or implemented. Other than stating that it works
and you can work around it.

~~~
untilHellbanned
I think PHP is well designed and implemented. I like it working with it. So
yes, let's please stop.

------
chasing
> The problem I have with PHP has nothing to do with the language, it’s its
> reputation. I can’t count the times I’ve started a conversation with a
> programmer who upon finding out I primarily do PHP got awkward with me.

I'm a developer. I use tools to get things done. PHP is one of many tools in
my arsenal. For certain projects, it's awesome. For others, it's very much not
awesome.

That's the beginning and the end of it. I don't get defensive. If I bring up
PHP and someone says something like, "Oh, I’m sorry about that" \-- that's an
indication of _that_ person's immaturity, not any weakness on my part. It's a
super condescending thing to say to someone...

If I didn't just give up on them at that point, maybe I'd explain why I chose
PHP. If I'm wrong and I'm actually making a bad choice of tools for the given
project -- happy to have that conversation and learn a thing or two!

------
PaybackTony
So much uneducated hate going on in the comments section here. As someone
who's developed high load projects in a few languages (C++, PHP, Node.js,
ColdFusion, Rails) I can say with absolute certainty that any of the modern,
popular languages are just as good as the other. What some may see as a
slight, others will see as a strength. It's up to the programmer to write
structured, thought-out code. Heck, one can argue that too much forced
structure can be bad for performance (assuming skilled programmers are at
work).

As an aside, my favorite syntax is C#.

But at the end of the day, the author has the right idea and it seems many of
you don't. If you're a skilled programmer the language is a preference, not a
precursor to what your app will turn out to be. If for any other reason than
platform related your code turned out bad it's a good indication you're not
one of those skilled programmers.

------
stop1234
"The problem I have with PHP has nothing to do with the language, it’s its
reputation. I can’t count the times I’ve started a conversation with a
programmer who upon finding out I primarily do PHP got awkward with me."

The HN post title is sure helping with the reputation.

~~~
driusan
The HN post title is the same as the author's original title.

------
aeturnum
There are always two responses after an article like this:

> PHP is great at gettings things done, pedantic points about design don't
> matter.

> PHP is a huge mess of a language - that people have overcome that to create
> things doesn't change that.

Both of these responses can be (and are, imo) true.

------
spriggan3
Well now you got a bunch of alternatives :

Asp.net on linux, Go, Elixir, Python, Ruby,Java ...

PHP kinda saved itself when it got Java like classes(which are fairly rigid
thus allowed retrofitting "type safety" in PHP) which allowed engineers to
write large and maintainable codebases (Symfony,Doctrine...).

So again, no need to complain, go see your manager and try to convince him to
try an alternative solution. Of course if you're using a CMS like Worpdress or
Magento it might be a bit more complicated to migrate. But for projects
started from scratch frankly, an engineer that can write a Symfony/Doctrine
app can easily switch to Asp.net, it's exactly the same level of complexity.

~~~
d33
I wouldn't say it is. In asp.net, language is better engineered and will get
in your way less often:

[https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-
design/](https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/)

~~~
anonjdgpogjsop
ASP ? dude really ?

PHP get in your way only when your starting. You never make these "bad
language mistakes" once you're experimented. And then you can write really
clean code.

ASP, however, makes me vomit everytime I read a single line. COBOL is more
readable !

~~~
TheCoelacanth
C# (the most commonly used ASP.Net language) is one of the best designed
mainstream languages out there. I'm not a fan of any of the ASP.Net web
frameworks, but the language itself is great.

------
DonaldFisk
[http://hammerprinciple.com/therighttool/items/php](http://hammerprinciple.com/therighttool/items/php)

[http://www.azquotes.com/author/47278-Rasmus_Lerdorf](http://www.azquotes.com/author/47278-Rasmus_Lerdorf)

As a language designer myself, I would find it hard to design a language
_worse_ than PHP, but Mark Rendle has tried:
[https://www.infoq.com/presentations/worst-programming-
langua...](https://www.infoq.com/presentations/worst-programming-language)

------
tmaly
I remember teaching myself PHP back in 2001 after the dotcom crash. I still
use it occasionally to whip up quick sites on a shared server setup. I have
also used to quickly build out some web based systems at my day job.

You can hate it as much as you like, but bad code comes from bad coding
practices. PHP has all the features other languages have. It even fairs pretty
well in the benchmarks game against its peers
[http://benchmarksgame.alioth.debian.org/](http://benchmarksgame.alioth.debian.org/)

------
at-fates-hands
Its so funny that people are so polarized either for or against PHP. Give me a
language that doesn't have pitfalls and stuff that doesn't make sense and I'll
show you an Amish NASCAR driver.

The one thing I never understood about developers is how your programming
languages are a total pissing match. If it gets the job done, who gives a fuck
if it has a few quirks here and there? Can you create something cool? Can it
be properly secured? Ok, great, let's focus on building something instead of
whether we're using wood or concrete.

~~~
collyw
Having used a few mainly languages in my time, I far prefer working with
Python or Perl over Java or Visual Basic. I encourage people to use the better
ones, so that hopefully the crap ones do die out (as VB seems to have!)

------
awalGarg
For anyone wishing to look at a small modern PHP7+async codebase, check out
[https://github.com/Room-11/Jeeves](https://github.com/Room-11/Jeeves) (I am
not involved with it). It shows the new guts of the language, and AFAIK some
PHP core contributors wrote part of that code as well.

On the article itself, it is a mindset issue with people. Not sure how it is
different from people saying "haskell is useless" or "JS is a toy language".

------
velmu
PHP Sucks, but so what? [http://drupal.ovh/nobody-gives-a-shit-about-
php](http://drupal.ovh/nobody-gives-a-shit-about-php)

------
programminggeek
PHP is awesome for Stage 2 level projects in this model:
[http://devblog.procore.com/dev/evolution-of-software-
applica...](http://devblog.procore.com/dev/evolution-of-software-
applications.html)

Once you need a framework and the complexity that goes with it, PHP starts to
suck. It lacks the behavior and tools to nicely manage complexity beyond a
pile of files.

But when what you need is a pile of files, PHP is awesome.

~~~
SadWebDeveloper
With PHP you can grow your own infrastructure from being a couple of calls to
your RDBMS/MySQL up to installing modern libs and implementing a framework. On
the other hand: With RoR, Python, NodeJS, et al (which by itself can do
anything, since they need frameworks and libraries for anything web-related)
you have to start with these HUGE dependencies and package managers that only
add more technical debt to your project plus your projects can't start from
dead-simple bd-calls it has to be all or nothing and under the same structure
because "it's the right thing to do bro, you will thank me later"... guess
what: i still don't use everything.

The day a languages appears that is web-ready and dead-simple with no
technical debt that's the day we can say: PHP Suck.

------
githubber123
That's why I like Brainfuck as my goto language so I don't have to deal with
the newbs jumping into my language <sarcasm>. I once had a python programmer
say I shouldn't use php because it doesn't have classes "so theres still some
old thoughts on the language floating around" and I know java api devs who
don't know the difference between POST or GET request so bad programmers come
in all languages.

------
SFJulie
The problem of PHP is its community of cheap workers not caring.

But I love them. As long as they stayed doing PHP they didn't contaminated
other communities.

Now that they came to python with their bad practices exacly for the bad
reputation reasons described in the article, I see PHP kind of coding ... SQL
injections, shell injections ....

Please PHP coders I love you doing PHP, don't leave PHP.

------
joshmanders
This post hits it on the head. I had been a 12+ year PHP developer and a
little less than 2 years ago I had left PHP for Node.js because I was sick of
constantly defending my competence to people who used PHP for 15 minutes back
in PHP4 days or had to fiddle with a crappy WordPress theme/plugin and
completely dismissed the whole ecosystem.

~~~
spinlock
I think it's hilarious when the same people who bash PHP will expound on their
love of YavaScript in the next sentence. It's like there is not distinction
between trendy and good. Actually, I think the author's post could be titled
"PHP isn't trendy" without loosing any meaning.

------
efnx
This is a great move on his part - every programmer should know as many
languages as they feasibly can. Being a monolingual programmer is like being a
carpenter who only uses hammers. Or maybe a better analogy would be an
investor who only owns stock in one fund, or a physicist who only studies one
type of particle.

------
talmand
If I listened to developers as a group I would think all tools/languages suck
and I would have never bothered entering this industry.

Anyway...

>> For many people, PHP is the first programming language they try without
formal education.

>> We’re not taken as seriously, and we’re being paid less.

Is this one of those correlation not causation things I keep hearing about?

------
legohead
The true programmer doesn't get attached to one language or another. If you
get 'fed up' with a language and switch, then you are taking the language way
too seriously. Use languages for what their particular strengths are, and
that's it.

------
sleepychu
>This is frustrating, but the best time to plant a tree is 20 years ago, the
second best time is today.

What a great way to look at this. Author has some really interesting insights
into why the PHP stigma exists and the problems that it creates for a (good)
PHP developer.

------
billpg
Is the success thanks to PHP or in spite of PHP?

~~~
pokle
PHP has always had this hyper productivity about it. You just made a change in
your editor, saved the file, and refreshed your browser for rapid feedback.
It's always been like that.

It's also stateless - less rope to hang yourself with.

Many web programming environments started with the same simple CGI model, but
eventually moved away chasing performance (for the computer), and leaving
behind rapid feedback during development time.

hyperdev.com is nice, but it's still way more complicated than a single file
PHP app.

~~~
spdionis
> It's also stateless - less rope to hang yourself with.

That's its best feature and I love it.

------
chj
With a decent IDE like phpstorm, modern PHP is surprisingly pleasant to
program. I would never use Java/C# again if it's up to me.

------
vans
[https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-
design/](https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/) No,
you're right, it's just a matter of reputation. The language and its mindset
are not to blame... ;-)

------
SadWebDeveloper
While RoR, Python, NodeJS et al don't solve the most annoying issue for every
developer: Deployment. Then they don't solve anything.

And don't start talking about docker... that's a patch/hack to a serious
problem, if i need an entire "jail manager" just to run your app then
deployment is not as easy as you kins think it is.

~~~
mordocai
You should be running PHP in a jail as well though. People just don't.

~~~
SadWebDeveloper
There is a big difference with the word "should" and "need". While i should
run PHP in a jail, it doesn't mean i need to. While with python, nodejs, ruby
et al, i need to otherwise it becames a dependency mess for every app on the
same server.

------
adamors
I'm not saying the article doesn't have merit but with a title like this it
looks just like karmawhoring.

------
whamlastxmas
I wouldn't ever recommend a beginner learn PHP. I would definitely recommend a
beginner learn Laravel. It has tremendously awesome free or inexpensive
learning materials, great documentation, great community support, and comes
out of the box with everything you would need for 95% of websites.

~~~
throwanem
If that's what you're after, you can go with Rails and not be stuck with PHP
at all. (Of course, if you go with Rails, you're stuck with Rails, so maybe
it's a wash.)

------
combatentropy
From the bottom of the article: "I regret using such a clickbaity title, but .
. . . " You could have called it, "PHP's stigma sucks and I'm leaving." It
would have been more attractive and honest, instead of piling on more of the
stigma that you dislike.

------
icedchai
PHP "sucks" as a language, but it's productive, great for getting things done.
It has some decent frameworks, like Laravel. You can bang out a ton of
functionality quickly.

I've made a ton of money doing PHP contracting locally. For my day job, it's
been Python, Java, and Go.

------
supbpeerr
to op: glad you're taking time to check out golang. I too have worked mainly
as PHP dev since 1999 or so, and recognize most of what you are saying. I
loved the new era of php with the composer ecosystem, but after investing too
many hours into Laravel, i finally had enough when I realized I could not even
use the backtraces to debug some issue I was having after upgrading. So I
decided to never touch it again.

Coming from php to golang is insane, you will be very impressed by all the
mature and insanely fast tooling.

For example I now have test suite running in about 0.3 seconds, where my last
PHP (laravel) app took about 20 minutes testing similar stuff.

------
axelarroyo
I don't think that PHP sucks, I think that lot of PHP projects sucks, because
exists lot of newbie developers without any minimum knowledge about
programming, making mess in lot of project just because is so easy to use PHP.

------
EugeneOZ
PHP is not worse than Ruby, definitely.

Composer is not a new wave but piece of shit which brings old shit-code style
with rules "don't touch it while it works" and "legacy code is a good reason
for bad architecture".

And Golang sucks too.

------
the_common_man
Is there some consultant out there who is getting paid good rates to program
with Go, Rust, Elm, Erlang? I would love to hear some stories. Most people I
know only get paid for php, rails or node.

------
paulgrimes1
PHP is a see-saw at a kids' playground; on one end there's a small, sensibly
dressed kid and on the other, an overweight kid having a great time, with
his/her side stuck firmly to the ground.

The child suspended in the air is wailing about how the _whole playground_ is
being _totally ruined_ by the other kid.

The other children watch, bemused, from the other playground equipment, happy
that they've grown out of the seesaw; all the parents watch from outside the
playground, not caring who plays with what.

I'm overweight and enjoy seesaws. Yay!

------
Gargoyle
PHP does suck. So much bad code written in such an awful language.

And yet this morning I'm earning yet another paycheck digging deep into PHP.

------
micwo
What is the good language? I am a web developer, what language should I learn
to create websites?

------
Im_a_throw_away
Do you know any ressources that explains how to write "good" plain PHP?

~~~
enobrev
[http://www.phptherightway.com/](http://www.phptherightway.com/)

 _There’s a lot of outdated information on the Web that leads new PHP users
astray, propagating bad practices and insecure code. PHP: The Right Way is an
easy-to-read, quick reference for PHP popular coding standards, links to
authoritative tutorials around the Web and what the contributors consider to
be best practices at the present time._

 _There is no canonical way to use PHP. This website aims to introduce new PHP
developers to some topics which they may not discover until it is too late,
and aims to give seasoned pros some fresh ideas on those topics they’ve been
doing for years without ever reconsidering. This website will also not tell
you which tools to use, but instead offer suggestions for multiple options,
when possible explaining the differences in approach and use-case._

------
ThomPete
Many great things suck.

PHP will still be the most accessible backend language for a long time and
only JavaScript stands a chance at outcompeting it for a long time. (And yes I
know JavaScript is normally seen as a frontend language)

~~~
krapp
>Many great things suck.

PHP, Javascript, C, C++, Java. Arguably "great" languages given their success,
and each attracts a mob with pitchforks and torches wanting to burn it down.

I would like to see Hack take off a bit more though. The XHP extension alone
solves so many headaches with templating. Treating XML elements like first
class citizens and having the language be able to reason about its current
context, and not having to echo HTML strings everywhere and just hope you
escaped everything properly, is something I wish PHP had picked up years ago.

------
acoderhasnoname
PHP is awesome, have you experienced Powerbuilder? :)

------
gabrielc
people still use php? that's a surprise.

------
0xmohit
No language sucks.

Shit producing daemons suck.

------
draw_down
I just don't think "you can make something that works with it" is a good
barometer for whether a language sucks.

------
FussyZeus
PHP is an oddball child for sure but I get more done in it than anything else.
Who gives a crap if other developers don't respect you? My bills are paid and
I know I do good work, everything else is just bonus.

I'm kind of glad I'm very disconnected from the communities and the various
groups that handle this stuff, I just write my code and go home. It sounds
like thousands of bickering children.

------
ooooak
> PHP Sucks

tell me something new

------
pbhowmic
Not news. Move on.

------
knieveltech
"PHP sucks because I have inadequacy issues." Well...alright then I guess.
Feel better soon.

~~~
knieveltech
I mean ok, downvote if you like, but I read the article and that is the TL;DR
right there.

------
anonjdgpogjsop
Every programming language sucks when you're bad at using it. This is the only
and universal truth.

Same for JS.

~~~
vemv
That's a pretty useless truth, who doesn't know that?

Many languages (like Go or Clojure) require you to learn quite a few concepts
and exercise your mind in general. This automatically filters out incompetent
programmers, and puts the rest in the right mindset.

~~~
jmcomets
I don't really agree on Go, however it is true that some programming languages
scare away beginners.

I wouldn't say that it filters out incompetence completely though. I remember
when I was writing Prolog for a school project and wasn't familiar with any of
its concepts. I ended up writing terrible Prolog that looked a whole lot like
the imperative stuff I was used to (wait, comma doesn't mean next
instruction?!).

------
jstewartmobile
A bad workman always blames his tools...

~~~
untothebreach
[https://news.ycombinator.com/item?id=2380679](https://news.ycombinator.com/item?id=2380679)

------
mxuribe
I'm by no means an expert on PHP but whenever I begin having similar thoughts
like the author, or begin having internal language religion wars in my head
about PHP, i remember that PHP actually stands for "PHast Prototyper"
(language/platform)..and tools/platforms like that have their place in the
world to help us...and then this thought allows me to regain my peace and
progress forward on my day (focusing on bigger things). This does not mean PHP
is inherently good or bad, merely a tool; to be used under the right
conditions (in this case rapid dev.).

Perhaps remembering that PHP could mean "PHast Prototyper" could help you/your
team come to terms with all this?

~~~
kbenson
Except that it doesn't. It originally stood for Personal Home Page, and was
changed at some point to the recursive PHP Hypertext Processor.

------
muglug
PHP is a toy language that's now being used in some reasonably grownup ways.

I've built a static analysis tool for it, and it sort of feels like writing a
CAD tool for lego bricks.

~~~
GrumpyNl
Maybe PhP is to hard for you?

~~~
muglug
The point isn't that it's easy or hard. It doesn't require the user to
understand things like scope or the rudiments of typing to get started, which
means it's insanely permissive.

~~~
homersapien
Which is like saying that chainsaws suck because they don't stop you from
cutting off your own leg.

~~~
muglug
Yeah, I could understand that perception if chainsaws were given away for free
to everyone who owned a house in the woods, and if they were touted as an
easy-to-use entry-level sawing device.

