
As you’re probably aware, Phar is now a core extension in PHP 5.3. This is great news for Greg Beaver, the project lead; he has worked incredibly hard to make the extension do all that could possibly be asked of it, and more. Marcus Borger and myself also work on the extension, but we’ve been left blinking at the speed of development more than once. At the time of writing, Greg had just added OpenSSL signing support to Phar, which means that the only thing left on the immediate TODO is performance optimization.
Oh, and forward compatibility.
Now optimization is definitely more Greg’s kind of thing than mine, and Marcus doesn’t have much spare time these days, so I took it on myself to focus on that other thing. I went to look at PHP 6.
The good news is that from now, all phars created using PHP 5.2.1 and up should run under PHP 6 and vice versa. The structure’s unchanged. Sing hallelujah.
The bad news is that a phar with a default stub won’t run under versions of PHP prior to PHP 5.2.1, whereas we had PHP 5.1 support this time last week. Blame: b and the binary cast. The default stub calls unpack(), you see, and PHP 6 needs to be told that the second argument to unpack() is a binary string and not a Unicode string. The only ways we have of telling PHP 6 this will throw a parse error in PHP 5.2.0 and under. There’s no way to have both backward compatibility and forward compatibility: we have to choose.
I approached Andrei Zmievski and asked why we couldn’t simply have a f Read more...