Celebrating 10 Years of PHP 5.0.0

Celebrating 10 Years of PHP 5.0.0

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:

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!

About Davey Shafik

Davey Shafik is a full time PHP Developer with 12 years experience in PHP and related technologies. A Community Engineer for Engine Yard, he has written three books (so far!), numerous articles and spoken at conferences the globe over.

Davey is best known for his books, the Zend PHP 5 Certification Study Guide and PHP Master: Write Cutting Edge Code, and as the originator of PHP Archive (PHAR) for PHP 5.3.