On Sat, Mar 26, 2016 at 12:17 AM, Yasuo Ohgaki <yohg...@ohgaki.net> wrote:

> On Sat, Mar 26, 2016 at 8:08 AM, Yasuo Ohgaki <yohg...@ohgaki.net> wrote:
> > On Sat, Mar 26, 2016 at 8:00 AM, Marco Pivetta <ocram...@gmail.com>
> wrote:
> >> On 25 March 2016 at 23:56, Yasuo Ohgaki <yohg...@ohgaki.net> wrote:
> >>>
> >>> Hi all,
> >>>
> >>> On Sat, Mar 26, 2016 at 5:31 AM, Marco Pivetta <ocram...@gmail.com>
> wrote:
> >>> > var_dump((object) ['' => 'foo']);
> >>> > var_dump((object) ["\0*\0" => 'foo']);
> >>> > var_dump((object) ["\0Foo\0" => 'foo']);
> >>>
> >>> Allowing null char would be too much. We reject null char in path
> >>> parameters, it should be rejected like path parameter. IMHO.
> >>
> >>
> >> The sequence "\0*\0" means "protected property", while the sequence
> >> "\0Foo\0" means "private property of class Foo": that's been the case
> for a
> >> looooong time :-)
> >
> > Oh. Was it? I've never used and encountered this. Thanks.
> > I'll avoid null char as I use PostgreSQL JSONB extensively, though.
> >
> >> Not suggesting allowing "\0" for property names: the example just shows
> >> creating a public, private and protected property with an empty name.
> >
> > Could you show some real world example use cases?
>
> You mean PHP converts private/protected property to this form, not
> currently used as JSON string.
> I understand your point!
>
> It would be good for PHP users supporting null chars in names, then.
>

As the discussion seems to going off on a tangent I'd like to clarify: I'm
only suggesting to remove the restriction on empty property names. The
restrictions we have on properties starting with NUL bytes stay intact, as
these do serve a purpose with regard to name mangling.

To add one further data point, dropping the empty property restriction also
fixes this bug about returning an array with an empty key from
__debugInfo(): https://bugs.php.net/bug.php?id=69537

Nikita

Reply via email to