> > On Mon, Jun 1, 2020 at 12:20 AM Gabriel Caruso <carusogabrie...@gmail.com> > wrote: > >> On Sun, 31 May 2020 at 15:57, Nikita Popov <nikita....@gmail.com> wrote: >> >> > On Fri, May 29, 2020 at 6:45 PM Gabriel Caruso < >> carusogabrie...@gmail.com> >> > wrote: >> > >> >> Hello, internals! >> >> >> >> I have opened the voting for >> >> https://wiki.php.net/rfc/magic-methods-signature. >> >> >> >> The voting period ends on 2020-06-19 at 18h (CEST). >> >> >> > >> > The RFC is a bit unclear on what is actually being proposed. It says >> > >> > > This RFC proposes to add parameter and return types checks per the >> > following details. >> > >> > and goes on to list (reasonable looking) magic method signatures, but >> does >> > not say how exactly those types are going to be checked. Is this going >> to >> > require exactly the same signature, or is this going to be in accordance >> > with variance rules? For example, are all of the following signatures >> valid >> > under this RFC? Only the first two? None of them? >> > >> > // Narrowed return type from ?array >> > public function __debugInfo(): array {} >> > >> > // Narrowed return type from mixed >> > public function __get(string $name): int {] >> > >> > // Widened argument type from string >> > public function __get(string|array $name): mixed {} >> > >> >> >> They are going to be checked following the variance rules, not the >> *exactly* same as the RFC. I'll mention this, thanks for point it out. >> >> Assuming this, your examples: >> >> 1 and 2. Will be valid, following the rules introduced by the `mixed` RFC. >> >> 3. Is that allowed in PHP? If so, the RFC will compliance with that. >> >> >> > >> > Also, is omitting the return type still permitted, even though it would >> > nominally violate variance? >> > >> > public function __debugInfo() {} >> > >> >> Yes, this hasn't changed. The RFC only affects *typed* methods. >> >> >> > >> > Finally, if omitting the return type is permitted, will an implicit >> return >> > type be added, like we do for __toString()? Would the method >> automatically >> > become >> > >> > public function __debugInfo(): ?array {} >> > >> >> An implicit return type won't be added for any of the magic methods. I >> believe that's a huge BC, and I don't want to debate that for PHP 8 (maybe >> PHP 9, yes). >> >> >> > >> > and report as such from reflection? >> > >> >> I need more clearance on this one: are you asking how magic methods are >> reported via Reflection and if that will be changed? >> >> >> > >> > Nikita >> > >> > On Tue, 2 Jun 2020 at 14:26, Dmitry Stogov <dmitrysto...@gmail.com> wrote:
> Does this RFC support __get() returning by reference? > See > https://github.com/php/php-src/blob/master/Zend/tests/overloaded_prop_assign_op_refs.phpt#L11 > > Thanks. Dmitry. Hello Dmitry, Yes, I'm not changing any behavior of magic methods and references. -- Gabriel Caruso