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

Reply via email to