Hi Andrea,
Am 08.02.2015 um 22:09 schrieb Andrea Faulds:
Hi,
On 8 Feb 2015, at 20:10, Marc Bennewitz <dev@mabe.berlin> wrote:
Since PHP-5.2.1 we have an artifact of PHP-6 in the engine means we can define
binary strings but such definitions haven't any effect.
Yes. That’s because PHP 6 was going to have Unicode strings by default,
alongside binary strings (to PHP 5 and 7, just “strings”).
These “binary strings” are just strings.
So what we can define is the following:
$str = "str";
$bin = b"b\0i\0n";
$str2bin = (binary)$str;
One of the biggest issue is that currently ALL strings will be handled as
ASCII-7 compatible strings on type-juggling but they aren’t.
In the rare case you need to prevent type juggling of binary data, you could
wrap it in an object.
Wrapping all in objects isn't an option. This would only add unnecessary
overhead and only move the issue to a different place.
It would be very appreciated if PHP could respect such binary declaration:
* use binary string comparison on compare a binary string to any other string
* don't convert binary strings into integers on array keys
* allow bitwise operators on binary strings without casting to integer
This would break existing code which was made “PHP 6-ready”.
I don't think so. If a string was declared as binary it should be binary
else it is a wrong declaration and a bug.
Also, we already support bitwise operations on strings, I don’t know what
you’re on about there...
Sorry I wasn't clear.
I mean the bitwise shift operators see http://3v4l.org/MBadR
... or as the other bitwise operators already works on all strings the
bitwise shifting operators should do so.
Like proposed in https://wiki.php.net/rfc/string-bitwise-shifts
@Chris status ?
--
Andrea Faulds
http://ajf.me/
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php