Ten years ago yesterday on July 13th 2004, PHP 5.0.0 was unleashed onto the world. Bringing with it the Zend Engine 2, effectively a brand new PHP.
Zend Engine 2 actually made its first public appearance in a couple of PHP 4.3.0 alphas (just for testing) — for most of us the big immediate difference was that objects were passed by reference, and something about a new object model. Whatever that was.
The truth is that until PHP 5, PHP was a mostly procedural language, while it supported classes and objects, they were a bolt-on feature. This history is still visible in the majority of its default feature set even today — including some of its newest additions like the new password hashing API.
And even then, once we got a real (although some would argue it was just: better) object model, as a community we really didn’t know what to do with it.
It wasn’t until a framework with a catchy name put all the pieces together that we really started to realize what PHP 5 has brought to the table. Which framework? Ruby on Rails of course.
It is my opinion that Ruby on Rails is the most significant thing to happen to PHP, ever.
As is often the case in the PHP community, we first mimicked, with CakePHP, then we built our own, with Zend Framework, and Symfony, and later Lithium, Laravel, and dozens more — some successful, others not so much; but almost all of them building on the MVC pattern that Rails brought to the table.
But ten years is a long time, and we’ve come a long way since the initial release of PHP 5.0.0. As part of our research we reached out to a number of community members, and asked their thoughts.
The most significant change to PHP in the last 10 years?
While some feel it is Namespaces, and others, PHP 5.0 itself, with its object model changes, there can be little doubt that it is the community which has changed the most in the intervening years.
How do you feel PHP has impacted the web?
With its ease of use, and its ability to act as “glue”, PHP is installed on ~80% of web servers, and in use by ~50% of web sites — this means that every other site you visit is using PHP in some capacity. Its impact on the web is undeniable.
Even if its not as cool and trendy as some languages (and let’s face it, it was never cool), it is still the tool of choice for many of us for getting things done™.
The biggest change in the community in the last 10 years?
It seems that while there were a lot of different outcomes because of this, over the last ten years, the thing that has changed the most is the maturity of the community.
The responses to this question ranged from better awareness of equality problems, to the development and use of best practices. Many pointed out the current so-called “rennaisance” for which Composer is the poster-child.
Twitter has impacted the level of communication in the PHP community more than anything else out there, including Facebook. The PHP community talks to each other on Twitter.
How do you think the cloud is impacting PHP?
Surprisingly, this question was mostly answered with “very little”. PHP has always been shared-nothing which means that as a language it scales infinitely horizontally, making it perfect for the cloud.
However as soon as you started to write code that uses shared resources, and that includes simple things like using the built-in file based sessions, things start to get tricky.
So, while PHP itself has not been impacted by the cloud, the bits and pieces it glues together definitely are, and that’s where we as a community focus our energy: scaling our sessions with memcache, replication for MySQL, or PostgreSQL, or switching away from relational databases entirely.
What is the most pressing issue for PHP?
With few exceptions, there is a definite desire for bringing more consistency to PHP’s core. Needle/haystack (or is that haystack/needle?) inconsistency is one of the things that people always point to as proof of PHP being a bad language, and on the whole the community acknowledges that while it doesn’t make the language bad, it is something we would like to change.
There are also many who wish to say goodbye to bad legacy decisions in favor of new functionality, and are looking forward to a new major version sooner rather than later.
I think that PHP still has a way to go in terms of fixing consistency, but other than that I can finally say that it is starting to look like a well rounded object oriented language, well done in these 10 years and happy birthday! The community is awesome, like I usually say, hugs to them all :).
What would you like to see in the next major version?
Surprisingly, performance was a hot topic for the next major version — however, with the rise of HHVM and other projects performance has been on everybodies mind lately.
Besides this, a greater focus on built-in security, anonymous objects, asynchronous functions, type hinting, generics, and more are desired — there are a lot of great ideas out there!
I think the “reboot” of the security of the language should be an emphasis in the coming years. When developers start learning how to secure their applications, there’s a lot of “you have to do this a specific way or it doesn’t work”. There’s been several best practices established around securing database queries, protecting output and filtering input but it definitely could be made simpler.
Below is a timeline we have put together from the initial releases of Zend Engine 2 to the latest release, PHP 5.6.
Zend Engine 2 Public Previews
Zend Engine 2 made its first appearance in previews and (three) alphas based on PHP 4.3-dev between May and September of 2002.
PHP 5.0 Beta 2
30th October 2003
PHP 5.0 Beta 1
29th June 2003
PHP 5.0 Beta 3
21st December 2003
PHP 5.0 Release Candidate
18th March 2004
PHP 5.0 Release Candidate 3
8th June 2004
PHP 5.0 Beta 4
12th February 2004
PHP 5.0 Release Candidate 2
15th April 2004
PHP 5.0.0 Final Released
13th July 2004
PHP 5.0.0 brought with it many enhancements:
- A new object model
- SPL (Iterators)
- Class Autoloading
- Completely re-done XML support, including SimpleXML
- MySQLi extension with improved MySQL support
- SQLite Support
- Improvements to Streams
PHP 5.1 Released
24th November 2005
PHP 6.0 Branch Created
9th August 2005
In a post to the php-internals mailing list, the version 6.0 is chosen over 5.5 for new development. It is intended to bring Unicode support to the core language.
PHP 5.2 Released
2nd November 2006
PHP 5.3 alpha 1
1st August 2008
After three years of working on PHP 6 and Unicode, PHP moves forward with the 5.x series.
PHP 5.3 Released
30th June 2009
PHP 5.3 was effectively PHP 6.0 without the Unicode work, bringing more major features than any PHP release to date:
- PHP Archives (PHAR)
- Late Static Binding
PHP 6.0 Unicode
11th March 2010
As discussion of where to go from 5.3 heat up, the decision to move on from PHP 6.0 — which contains only the Unicode work — is made in favor of continuing once more with the 5.x series.
PHP 5.4 Released
1st March 2012
PHP 5.4 is the release that finally removed
register_globals, along with a number of other legacy options. But it was much more than this:
- Short array syntax
- Enhancements to closures
- Short echo tags always available
- Built-in Web Server
PHP 5.5 Released
20th June 2013
PHP 5.5 continues the cadence, but is delayed by 3 months because of the addition of Zend OpCache, which replaces APC amid a number of other larger changes:
- Generators and Coroutines
- "Finally" added to try/catch
- Simple password hashing API
PHP 5.6 will soon be available (currently at Release Candidate 2), and is the smallest release since the 5.x series was resumed:
- Variadic Functions
- Argument Unpacking (AKA Splat)
- Constant Scalar Expressions
PHP Next Generation (phpng)
5th May 2014
Zend announces its work on refactoring the Zend Engine, called phpng. This results in a significant performance increase, however it requires updates to existing extensions, and still has some work before its complete.
With more and more backwards compatibility breaking RFCs being proposed, naturally the next major version of PHP is on peoples mind.
PHP 5.3 vs PHP 6.0
Had everything worked out as it was supposed to, PHP 6.0 would have been released years ago following on from PHP 5.2. With Unicode (UTF-16) support throughout, it would have allowed us to do things like use the Chinese and Cyrillic alphabets for identifiers, as well as ensuring that all string functions actually operated on characters, not bytes, etc.
But… things didn’t go to plan, and the decision was made (eventually) to release the majority of features scheduled for 6.0 (everything but the Unicode transition) as PHP 5.3.
When time came to move on from there, PHP 6.0’s Unicode efforts were dropped entirely, and PHP 5.4 followed.
The Future of PHP
PHP, as always, is in the hands of its community: you too can shape the future of the web.
Are you looking forward to PHP 5.6? Or do you have ideas for what PHP-NEXT should bring to the table? We’d love to hear your thoughts and feedback in the comments!