Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:82178 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 59614 invoked from network); 8 Feb 2015 21:49:04 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 8 Feb 2015 21:49:04 -0000 Authentication-Results: pb1.pair.com header.from=dev@mabe.berlin; sender-id=unknown Authentication-Results: pb1.pair.com smtp.mail=dev@mabe.berlin; spf=permerror; sender-id=unknown Received-SPF: error (pb1.pair.com: domain mabe.berlin from 80.237.132.167 cause and error) X-PHP-List-Original-Sender: dev@mabe.berlin X-Host-Fingerprint: 80.237.132.167 wp160.webpack.hosteurope.de Received: from [80.237.132.167] ([80.237.132.167:43493] helo=wp160.webpack.hosteurope.de) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id FF/46-26926-CC9D7D45 for ; Sun, 08 Feb 2015 16:49:01 -0500 Received: from dslb-188-102-038-011.188.102.pools.vodafone-ip.de ([188.102.38.11] helo=[192.168.178.30]); authenticated by wp160.webpack.hosteurope.de running ExIM with esmtpsa (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) id 1YKZir-0000HY-QP; Sun, 08 Feb 2015 22:48:57 +0100 Message-ID: <54D7D9C9.8040403@mabe.berlin> Date: Sun, 08 Feb 2015 22:48:57 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0 MIME-Version: 1.0 To: Andrea Faulds CC: internals@lists.php.net References: <54D7C2CD.7040707@mabe.berlin> <74E307F8-6E5B-4CA6-8639-A3D89FF63A87@ajf.me> In-Reply-To: <74E307F8-6E5B-4CA6-8639-A3D89FF63A87@ajf.me> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-bounce-key: webpack.hosteurope.de;dev@mabe.berlin;1423432141;011d3c71; Subject: Re: [PHP-DEV] PHP6 artifact - binary strings From: dev@mabe.berlin (Marc Bennewitz) Hi Andrea, Am 08.02.2015 um 22:09 schrieb Andrea Faulds: > Hi, > >> On 8 Feb 2015, at 20:10, Marc Bennewitz 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/ >