

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. — Cal Evans

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 :). — Michelle Sanver

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. — Chris Cornutt

Timeline

Below is a timeline we have put together from the initial releases of Zend Engine 2 to the latest release, PHP 5.6.

2002 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. 2003 PHP 5.0 Beta 2 30th October 2003 PHP 5.0 Beta 1 29th June 2003 PHP 5.0 Beta 3 21st December 2003 2004 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)

Reflection

Class Autoloading

Completely re-done XML support, including SimpleXML

MySQLi extension with improved MySQL support

SQLite Support

Improvements to Streams 2005 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. 2006 PHP 5.2 Released 2nd November 2006 2008 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. 2009 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: Namespaces

Closures

PHP Archives (PHAR)

Late Static Binding 2010 RIP 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. 2011 RFC and Release Processes Formalized June 2011 Feature RFC Voting and the release process are formalized. Leading to annual releases. 2012 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

Traits

Enhancements to closures

Short echo tags always available

Built-in Web Server 2013 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 2014 PHP 5.6 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. The Future

of PHP 2015 and Beyond PHP-NEXT With more and more backwards compatibility breaking RFCs being proposed, naturally the next major version of PHP is on peoples mind. PHP 6.0 (again?) 5th May 2014 Which raises the question: 6.0 or not? There is currently an RFC asking just this question. Should we skip 6.0 (to avoid confusion) and jump straight to 7.0, or not?

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!