Also since the release of PHP 7.0, core development seems to have really picked up with good stuff in every release (7.3 was just released a few months ago).
The only thing Laravel had going for it was that you could take more shortcuts, and it was a pain to integrate into any IDE if you wanted decent autocompletion.
Not an end-all be-all, but worth noting: https://github.com/topics/framework
It's still a horrible abomination of a language that invites bugs and requires A LOT of care to not produce buggy code, though.
* touching basically any standard library function negates a lot of the benefit
* silent coercion still happens everywhere inside a function body
Even if strict comparison, you have to spend a lot of code validating the input and it's really easy to forget an edge case.
Yes, which would make it behave exactly like probably every language with strong runtime typechecks. Very weird indeed. It's obviously much more preferable that the code sometimes does the wrong thing without warning.
And of course with static typing, it would be extremely weird since the code wouldn't even pass the compiler!
For people not using Intellij (or wanting a tool that can be used as part of commit/deploy setup there is phan which is well executed).
I've mocked PHP for a long time (been using it for various day jobs for over a decade) but they've made massive strides in the last 2-3 years to the extent where used properly it's approach 'not a bad' language status.
1. Generic typehints, for one. Typehinting half the methods as returning a generic `array` is not fun.
2. And that's before you even remember that PHP's array is both a vector and a hashmap, so you need to install a PECL extension or a third-party library to get proper Map/Sequence/etc.
Configuring a service to monitor gunicorn, which itself took a bit to configure, before I begin configuring NGINX or Apache... it's really a pain in the butt.
LAMP/LEMP stacks just... are
Deploying is as simple as touching a reload.wsgi file.
Turns out, leveraging Dokku and having the right files, ie a Procfile to bind your app to Gunicorn and pushing the repo to the dokku instance was all it took.
Granted, it's for internal use so downtime isn't that big of an issue.
LEPP (nginx, PostgreSQL, Python) stack seems to me an all-around better stack for most of the deployments people use LAMP for.
Writing secure, readable, quality code in PHP is something I'm far more comfortable doing than deploying Flask or Django apps on a VPS. That's a function of my lived experiences.
YMMV, but I think declaring python/ruby on the backend is "the all-around better stack" for everyone is a bit short-sighted imho.
Granted, we're talking about largely server side generated web pages and, haha, who does THAT still in 2019 : hangs head in shame :
But I am rewriting my personal site/blog in Go as a trial run/learning process. I've been critical of Go in the past so I thought I'd give it a... go.
So far I don't mind the experience. No server framework, either. The standard library is actually pretty good, at least for something simple like that.
The only [external] dependency I'm pulling in so far is `blackfriday` for parsing Markdown files (the posts) upon request— I'm much too lazy to write a Markdown parser myself for this purpose.
It's not finished yet, but it's on its way— https://github.com/robertfairley/rf-19-go
Citation needed. I’ve had a very nice time. It’s statically typed, has excellent templating support, and is generally very productive.
I'm glad it's working out for you, but I don't think it's a stretch to say it wasn't really designed for it. On its own, that doesn't mean it's a bad fit; but I agree with your parent and think it's awful for this type of stuff.
(1) - https://commandcenter.blogspot.com/2012/06/less-is-exponenti...
Credentials: Worked mainly in go for 4 years... 18+ years coding in about 9 languages.
Yes I realized this is opinion.
MySQLd in PHP is a mirror process, and in fact retains the C function names.
WRT ORMs - Go has ORMs, some of them look reasonable. I'm not a big fan of ORMs in general though. IMHO the only valid use cases for ORM's are for applications that need to support multiple database technologies, or where the application developers don't know SQL.
One of the reasons PHP was appealing initially was that all this boilerplate and extra files were unnecessary, you just wrote something in the .php file (in Apache’s hierarchy) and could load the web page. As problematic as that was, it let you focus on getting stuff done instead of overwhelming you with ad hoc conventions and dozens of files with no immediate use.
Go is a language with sane defaults and little boilerplate. It would benefit from a web framework with similar principles.
Or anything else for that matter, maybe aside from some command line tooling.
Facebook goes into this category then, I presume?