.. but if you try, sometimes you get what you need. Those are the lines from one of my favorite Rolling Stones songs. Like many of us, I have some ideas of how to improve PHP. Like many of us, we have to accept that the powers that are might not agree. More often than I would like to see the reason for this has been more politics and general chaos on the internals mailinglist. In the past weeks things have improved a bit, but for a while it seemed unbearable. People seemed to insist on repeating themselves endlessly only because they feared that their argument would end up forgotten. This is not too far fetched, because currently the main course of action to get something in is asking for it often enough until the opposition is too busy or on vacation. At the same time I would argue that a lot of what makes PHP the most successful web language on the planet is its agility, which would be lost if we put all too complex processes into place.
As such I really like what Stefan has done with his Traits proposal. Very nicely done. A lot of the initial homework was taken care of, including a patch to make things happen. The RFC contained examples and background infos as well. And most importantly Stefan is keeping the RFC up to date, adding additional explanations and a FAQ. Even if Traits end up not being accepted or dropped, we can always go back to find a nice solid summary of the discussion. Well actually right now the RFC documents are hidden away in the unwieldy mailinglist archive and Stefan's private homepage, which could disappear any day. Of course there are also the various web archives, but what would be nice to have is a PHP.net wiki. Something that is truly official, where we could also host the todo list I currently maintain on my private blog (which could of course also disappear any day). This one I will make happen this time around. Just to calm those who worry, the purpose of the wiki is not to replace the documentation system or the recent reST system for README's Hannes and I put into place. With that wiki I hope we can also establish a lightweight non bureaucratic RFC process. Lars already put together an initial RFC template.
Once the wiki and the RFC have transformed PHP.net into a heaven of cooperative productive development, maybe then PHP.net will accept some other changes I would like to see. One is array_merge_replace() (aka array_merge_clobber()), which I have been asking for since ages (and others have even asked before me). This function would make it possible to merge two arrays recursively while maintaining their structure, the later requirement is what breaks array_merge_recursive() for me. Another one is a need for a file_exists() that can search the include path. All the different hacks with fopen()] (people tell me fopen() should have never have gotten that include path flag for purity reasons) or iterating over the include path setting or the combination of both are just nasty. These are so common place that its obvious that we need something in PHP. The last item is just another plead to not turn non fatal errors into fatal errors. PHP should indeed alert the developer but not slap him dead.