Some people have this misconception that there is a plot to kill of the original mysql extension (aka
ext/mysql) in PHP.
So first off, I know that bloggers are not journalist. So apprently fact-checking is not required for a rant blog post. ;-) But if a blog post is a rant, it should be labeled as such.
ext/mysqli (hint: “i” as in improved) has been the goto extension for years. If anyone writes code in 2011 which uses
ext/mysql, then they should be fired or demoted to trainee. MySQL’s 4.1.3 beta was released in 2004 and ever since its release, it’s been “strongly” suggested to use
PHP’s fault in this case is that it didn’t drop
The problem with legacy code is that it’s usually not a legacy with the good meaning of the word.
It’s indeed a legacy of the past which often exhibits all things that can go wrong on a PHP project.
In a situation where a project requires an older version of PHP to run, there are two kind of improvements developers (and essentially the companies employing them) miss out on: active and passive.
… generally happen and don’t require anyone to re-write any code, examples include:
- PHP’s runtime became more efficient
- improvements such as garbage collection
- most importantly: bugs were fixed
… may require updates to the code base — they mostly include new features (e.g. through a new extension) or extensions of the language itself — namespaces, traits, etc..
In addition to missing out on the improvements of the language another major problem is that since the code base requires an out-dated (maybe vulnerable) version of PHP to run, companies are often stuck in an entirely outdated ecosystem.
From top to bottom: it starts from the OS (Security updates?) — Linux, but also includes the services you run — MySQL and Apache. But there you go, the entire LAMP stack is fubar’d.
Anyone could argue that it’s possible to e.g. run PHP4 on a recent Linux with semi-recent components, but let alone compiling PHP and/or backporting patches for security issues and crucial bugfixes don’t make maintainance exactly trivial.