Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:52882 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 45241 invoked from network); 4 Jun 2011 11:52:38 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 4 Jun 2011 11:52:38 -0000 Authentication-Results: pb1.pair.com header.from=david.zuelke@bitextender.com; sender-id=unknown Authentication-Results: pb1.pair.com smtp.mail=david.zuelke@bitextender.com; spf=permerror; sender-id=unknown Received-SPF: error (pb1.pair.com: domain bitextender.com from 80.237.132.12 cause and error) X-PHP-List-Original-Sender: david.zuelke@bitextender.com X-Host-Fingerprint: 80.237.132.12 wp005.webpack.hosteurope.de Received: from [80.237.132.12] ([80.237.132.12:47228] helo=wp005.webpack.hosteurope.de) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id F7/A2-23330-F7C1AED4 for ; Sat, 04 Jun 2011 07:52:32 -0400 Received: from dslb-092-075-002-048.pools.arcor-ip.net ([92.75.2.48] helo=[192.168.0.102]); authenticated by wp005.webpack.hosteurope.de running ExIM with esmtpsa (TLS1.0:RSA_AES_128_CBC_SHA1:16) id 1QSpP0-0005zI-Bk; Sat, 04 Jun 2011 13:52:26 +0200 Mime-Version: 1.0 (Apple Message framework v1084) Content-Type: multipart/signed; boundary=Apple-Mail-19-316147847; protocol="application/pkcs7-signature"; micalg=sha1 In-Reply-To: Date: Sat, 4 Jun 2011 13:52:25 +0200 Cc: Andrei Zmievski , Martin Scotta , Sean Coates , Anthony Ferrara , PHP internals Message-ID: <4723EA79-957B-4E03-85D1-F2F0E6DA29FA@bitextender.com> References: <4DE5368A.6050603@moonspot.net> <8BEEEE49-8DA3-4634-BF9C-120F7A15B613@roshambo.org> <4C39B728-2283-49A7-87F5-B0CC9EC42505@bitextender.com> To: John Crenshaw X-Mailer: Apple Mail (2.1084) X-bounce-key: webpack.hosteurope.de;david.zuelke@bitextender.com;1307188352;788ac1c3; Subject: Re: [PHP-DEV] RFC: Short syntax for Arrays (redux) From: david.zuelke@bitextender.com (=?iso-8859-1?Q?David_Z=FClke?=) --Apple-Mail-19-316147847 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=iso-8859-1 Yes, I know. Then why are you and others demanding that the resulting = syntax be fully compatible with JSON so it could be parsed by other JSON = parsers? That makes no sense at all. A file with just ["foo"] in it = won't be interpreted by PHP; you need at least wrappers and a = semicolon, and then you can't just throw it at another JSON parser = anymore. There is absolutely no use case for this, but some people on this thread = seem to have some weird dream where they can somehow share code between = languages or whatever. Which they can't. Unless they want to start = stripping or padding stuff and generating code. I was pointing out the encoding issue under the assumption that it = somehow *did* make sense, e.g. that you'd have a JSON compatible = declaration somewhere in a PHP file, extracted it with, say, a regex, = and handed it to PHP's own JSON parser, which might then struggle = depending on the encoding of the file. David P.S. I guess that also answers Andrei's question regarding whether or = not I understood what a parser was or w/e :) On 04.06.2011, at 02:43, John Crenshaw wrote: > This is a moot point. You wouldn't send that to json_decode. You would = send it to json_encode. In other words json_decode({"yay": "=E4"}) is = totally wrong in the first place, because json_decode requires a string, = not an object. >=20 > John Crenshaw > Priacta, Inc. >=20 > -----Original Message----- > From: David Z=FClke [mailto:david.zuelke@bitextender.com]=20 > Sent: Friday, June 03, 2011 6:11 PM > To: Andrei Zmievski > Cc: Martin Scotta; Sean Coates; Anthony Ferrara; PHP internals > Subject: Re: [PHP-DEV] RFC: Short syntax for Arrays (redux) >=20 > It's not FUD. >=20 > It is different from writing json_decode('=E4\u0123'), because = json_decode() in PHP only accepts UTF-8 encoded input; >=20 > Give it a shot: >=20 > $chr =3D "\xC3\xA4"; // "=E4" as UTF-8 > var_dump(json_decode('["' . $chr . '\u00e4"]')); > var_dump(json_decode('["' . utf8_decode($chr) . '\u00e4"]')); > ?> >=20 > That'll produce: >=20 >> array(1) { >> [0]=3D> >> string(4) "=E4=E4" >> } >> NULL >=20 > Understand what the problem is now? >=20 > If someone does this in a latin1-encoded file: >=20 > >=20 > Then that is valid as a PHP array (as it's a latin1 "=E4", so \xE4), = but cannot be consumed by PHP's json_decode(). And that would be = terribly inconsistent behavior. >=20 > David >=20 >=20 > On 02.06.2011, at 22:15, Andrei Zmievski wrote: >=20 >> Stop spreading FUD, please. >>=20 >> It's no different than writing json_decode("=E4\u0123"). >>=20 >> Your statement, "the stuff in bar in UTF-8" is wrong. The \u0123 >> escape sequence is a representation of a Unicode character, not the >> character itself. This representation can be encoded in any >> ASCII-compatible encoding, such as Latin-1, UTF-8, etc. So putting it >> directly in a Latin-1 encoded script is just fine. >>=20 >> -Andrei >>=20 >> On Thu, Jun 2, 2011 at 12:00 PM, David Z=FClke >> wrote: >>> No we can't; I already explained why in another email last night. = Copypasta: >>>=20 >>> json_decode() can deal with Unicode sequences because decodes to = UTF-8. That is not possible in a language construct: >>>=20 >>> What if I do this, in a latin1 encoded file: >>>=20 >>> $x =3D {foo: "=E4", bar: "\u0123"} >>>=20 >>> Should that then give mixed encodings? The "=E4" in foo in latin1 = and the stuff in bar in UTF-8? >>>=20 >>> And what if I do: >>>=20 >>> $x =3D {foo: "=E4\u0123"} >>>=20 >>> I'll either end up with an invalid UTF-8 sequence, or with latin1 = character soup. >>>=20 >>> David >>>=20 >>>=20 >>> On 02.06.2011, at 18:04, Martin Scotta = wrote: >>>=20 >>>> Could we first go out with fully JSON compatible version for 5.4? >>>> and then later decide the =3D> stuff based on how that worked. >>>>=20 >>>> Native JSON is a big stuff for userland, and I'm pretty sure it = will bring a >>>> hole of core version upgrades. >>>>=20 >>>> Martin Scotta >>>>=20 >>>>=20 >>>> On Wed, Jun 1, 2011 at 7:09 PM, Sean Coates = wrote: >>>>=20 >>>>>> Now, the only reason I would personally support the array = shortcut is >>>>>> if it was an implementation of JSON. I know that's not on the = table >>>>>> here >>>>>=20 >>>>> I don't think anything is officially off the table, unless we = forego >>>>> discussion. >>>>>=20 >>>>> My application is largely JSON-powered. We pass data from back- to >>>>> front-end via JSON, we interact with MongoDB via the extension = (which is an >>>>> altered JSON-like protocol (arrays instead of objects), but would = be a lot >>>>> more fluent with actual objects-they're just too hard to make in = current >>>>> PHP), and we interface with ElasticSearch. The paste I linked = earlier is our >>>>> primary ElasticSearch query. >>>>>=20 >>>>> The benefits of first-class JSON are important and wide-reaching; >>>>> especially when interacting with systems like the ones I've = mentioned. >>>>> There's a huge amount of value in being able to copy JSON out of = PHP and >>>>> into e.g. CURL to make a query to ElasticSearch without worrying = that I've >>>>> accidentally nested one level too deep or shallow, or accidentally >>>>> mistranslating my arrays into JSON. >>>>>=20 >>>>> This is not about saving five characters every time I type = array(), it's >>>>> about making my systems all work together in a way that's a little = less >>>>> abstracted, and a lot less prone to error. >>>>>=20 >>>>> S >>>>> -- >>>>> PHP Internals - PHP Runtime Development Mailing List >>>>> To unsubscribe, visit: http://www.php.net/unsub.php >>>>>=20 >>>>>=20 >>>=20 >>=20 >> -- >> PHP Internals - PHP Runtime Development Mailing List >> To unsubscribe, visit: http://www.php.net/unsub.php >>=20 >>=20 >=20 >=20 > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php >=20 >=20 --Apple-Mail-19-316147847 Content-Disposition: attachment; filename=smime.p7s Content-Type: application/pkcs7-signature; name=smime.p7s Content-Transfer-Encoding: base64 MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIMZDCCBW4w ggRWoAMCAQICECzy3OO4bIaKwclpYXzU0GAwDQYJKoZIhvcNAQEFBQAwgd0xCzAJBgNVBAYTAlVT MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29y azE7MDkGA1UECxMyVGVybXMgb2YgdXNlIGF0IGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9ycGEg KGMpMDkxHjAcBgNVBAsTFVBlcnNvbmEgTm90IFZhbGlkYXRlZDE3MDUGA1UEAxMuVmVyaVNpZ24g Q2xhc3MgMSBJbmRpdmlkdWFsIFN1YnNjcmliZXIgQ0EgLSBHMzAeFw0xMDEwMTQwMDAwMDBaFw0x MTEwMTUyMzU5NTlaMIIBGzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT aWduIFRydXN0IE5ldHdvcmsxRjBEBgNVBAsTPXd3dy52ZXJpc2lnbi5jb20vcmVwb3NpdG9yeS9S UEEgSW5jb3JwLiBieSBSZWYuLExJQUIuTFREKGMpOTgxHjAcBgNVBAsTFVBlcnNvbmEgTm90IFZh bGlkYXRlZDEzMDEGA1UECxMqRGlnaXRhbCBJRCBDbGFzcyAxIC0gTmV0c2NhcGUgRnVsbCBTZXJ2 aWNlMRUwEwYDVQQDFAxEYXZpZCBadWVsa2UxKzApBgkqhkiG9w0BCQEWHGRhdmlkLnp1ZWxrZUBi aXRleHRlbmRlci5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTFIMYSR0GnIsK MHUvTk4cSKdV0AtBkWcU1xrOVB+N+Yt/2VBtKV8QhfGwN6s8djcq3WGQEHjah8yoNbzNbhMOCPds TLpR3h2LYZ92s1LAUZxSEnk0vHGGSH3Mh+p9gOYUiSxr15jQEKJ3lRM5Rhx0FEiNIclIyIycAH5v Gog+uE3PGR9TJ2W7HkL7syT7BSCHGCRKPKgNyHDBG2f+kwVkaha7wuJr/8FVeu4EOsN5LsFfzZpY tEkZLynV2mtrUfuRiC1VO/XGS4nx8Mal5hR4TGo2aMWnLhMv0vIkqkFgMIyb+U7shrSqgRA1twQu E+XqjKcTsoSmf/RtlR5k+3lnAgMBAAGjgegwgeUwCQYDVR0TBAIwADBEBgNVHSAEPTA7MDkGC2CG SAGG+EUBBxcBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9ycGEwCwYD VR0PBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMEBggrBgEFBQcDAjAUBgpghkgBhvhFAQYHBAYW BE5vbmUwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2luZGMxZGlnaXRhbGlkLWczLWNybC52ZXJp c2lnbi5jb20vSW5kQzFEaWdpdGFsSUQtRzMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCORRzoX9q6 ru46+C/LmaYBhjpFVNizsGHweTgBJJZUvkvDLG/sSBKIyFG54vnQUSgTKll6rLuVEWxbDNCq847z PPMWRFaNQSSg8qztcIbhkFx7WxnY/BXpS+E2hQe/VLD0u67OerJBYsVnFAEYXQPSa7XCOqtlld+3 gt6TNvQRHDvjnpLeQXzWbC8WVVqEf835ZOQdXrVRHiYyu08MfXbi9x3KbbUtGA78f9WpD0wZ27ix I22+66Co1TTU2wbti1XdhJhOOXwwHzKtD0ESJbbMmjquplOgNgPJjViHUE0E3pX6YUCgiviP73Lq PnyQ4yjltudFrANX4PB6GjZ5EHHhMIIG7jCCBdagAwIBAgIQcRVmBUrkkSFN6bxE+azT3DANBgkq hkiG9w0BAQUFADCByjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYD VQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMTk5OSBWZXJpU2lnbiwg SW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAx IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzMwHhcNMDkwNTAxMDAw MDAwWhcNMTkwNDMwMjM1OTU5WjCB3TELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJ bmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1 c2UgYXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwOTEeMBwGA1UECxMVUGVyc29u YSBOb3QgVmFsaWRhdGVkMTcwNQYDVQQDEy5WZXJpU2lnbiBDbGFzcyAxIEluZGl2aWR1YWwgU3Vi c2NyaWJlciBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7cRH3yooHXwG a7vXITLJbBOP6bGNQU4099oL42r6ZYggCxET6ZvgSU6Lb9UB0F8NR5GKWkx0Pj/GkQm7TDSejW6h glFi92l2WJYHr54UGAdPWr2f0jGyVBlzRmoZQhHsEnMhjfXcMM3l2VYKMcU2bSkUl70t2olHGYjY SwQ967Y8Zx50ABMN0Ibak2f4MwOuGjxraXj2wCyO4YM/d/mZ//6fUlrCtIcK2GypR8FUKWVDPkrA lh/Brfd3r2yxBF6+wbaULZeQLSfSux7pg2qE9sSyriMGZSalJ1grByK0b6ZiSBp38tVQJ5op05b7 KPW6JHZi44xZ6/tu1ULEvkHH9QIDAQABo4ICuTCCArUwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUF BzABhhhodHRwOi8vb2NzcC52ZXJpc2lnbi5jb20wEgYDVR0TAQH/BAgwBgEB/wIBADBwBgNVHSAE aTBnMGUGC2CGSAGG+EUBBxcBMFYwKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNv bS9jcHMwKgYIKwYBBQUHAgIwHhocaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYTA0BgNVHR8E LTArMCmgJ6AlhiNodHRwOi8vY3JsLnZlcmlzaWduLmNvbS9wY2ExLWczLmNybDAOBgNVHQ8BAf8E BAMCAQYwbgYIKwYBBQUHAQwEYjBgoV6gXDBaMFgwVhYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQU S2u5KJYGDLvQUjibKaxLB4shBRgwJhYkaHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nbzEu Z2lmMC4GA1UdEQQnMCWkIzAhMR8wHQYDVQQDExZQcml2YXRlTGFiZWw0LTIwNDgtMTE4MB0GA1Ud DgQWBBR5R2EIQf04BKJL57XM9UP2SSsR+DCB8QYDVR0jBIHpMIHmoYHQpIHNMIHKMQswCQYDVQQG EwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5l dHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQg dXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlm aWNhdGlvbiBBdXRob3JpdHkgLSBHM4IRAItbdVaEVIULAM+vOEjOsaQwDQYJKoZIhvcNAQEFBQAD ggEBADlNz0GZgbWpBbVSOOk5hIls5DSoWufYbAlMJBq6WaSHO3Mh8ZOBz79oY1pn/jWFK6HDXaNK wjoZ3TDWzE3v8dKBl8pUWkO/N4t6jhmND0OojPKvYLMVirOVnDzgnrMnmKQ1chfl/Cpdh9OKDcLR RSr4wPSsKpM61a4ScAjr+zvid+zoK2Q1ds262uDRyxTWcVibvtU+fbbZ6CTFJGZMXZEfdrMXPn8N xiGJL7M3uKH/XLJtSd5lUkL7DojS7Uodv0vj+Mxy+kgOZY5JyNb4mZg7t5Q+MXEGh/psWVMu198r 7V9jAKwV7QO4VRaMxmgD5yKocwuxvKDaUljdCg5/wYIxggSLMIIEhwIBATCB8jCB3TELMAkGA1UE BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO ZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29t L3JwYSAoYykwOTEeMBwGA1UECxMVUGVyc29uYSBOb3QgVmFsaWRhdGVkMTcwNQYDVQQDEy5WZXJp U2lnbiBDbGFzcyAxIEluZGl2aWR1YWwgU3Vic2NyaWJlciBDQSAtIEczAhAs8tzjuGyGisHJaWF8 1NBgMAkGBSsOAwIaBQCgggJtMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkF MQ8XDTExMDYwNDExNTIyNlowIwYJKoZIhvcNAQkEMRYEFAi0uUHXK4RrfR/rSNNKyz55WDN5MIIB AwYJKwYBBAGCNxAEMYH1MIHyMIHdMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIElu Yy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOzA5BgNVBAsTMlRlcm1zIG9mIHVz ZSBhdCBodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhIChjKTA5MR4wHAYDVQQLExVQZXJzb25h IE5vdCBWYWxpZGF0ZWQxNzA1BgNVBAMTLlZlcmlTaWduIENsYXNzIDEgSW5kaXZpZHVhbCBTdWJz Y3JpYmVyIENBIC0gRzMCECzy3OO4bIaKwclpYXzU0GAwggEFBgsqhkiG9w0BCRACCzGB9aCB8jCB 3TELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln biBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQgaHR0cHM6Ly93d3cudmVy aXNpZ24uY29tL3JwYSAoYykwOTEeMBwGA1UECxMVUGVyc29uYSBOb3QgVmFsaWRhdGVkMTcwNQYD VQQDEy5WZXJpU2lnbiBDbGFzcyAxIEluZGl2aWR1YWwgU3Vic2NyaWJlciBDQSAtIEczAhAs8tzj uGyGisHJaWF81NBgMA0GCSqGSIb3DQEBAQUABIIBAMDRvnYQ2Y2aMVU8b3v+9wIVotLt0LrZ/h/H ovpDhpZFClK4iMTtR7q/gIe1GlWsNOouY5Nz/32a1DAkpN3zHLDhXUB+1YEAU4mk8pl1ajJix0aN xt0gt8YH7yoBIrgaq3sKpMrRpeZlicq3L5J6UBJDpfX9yr0k6GQQN9jtMpATv7EQysJOZy5icw9J qJfYkOzowlkXozer7TNMmih4SwpPu/CxCnHZjE4fP3LCcfktCRrCtANLQgL57LjC6rdSugZ9Q3KY KEJXWCXQ6qGNjNcufPFKnJhxfYXt6GHH8Vs3nffPZVXnqPvvuwjOIMRaaIXzyzSu5zAMlLO1yLPl yPoAAAAAAAA= --Apple-Mail-19-316147847--