Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:110353 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 54914 invoked from network); 3 Jun 2020 22:23:37 -0000 Received: from unknown (HELO php-smtp4.php.net) (45.112.84.5) by pb1.pair.com with SMTP; 3 Jun 2020 22:23:37 -0000 Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 4C05B18050A for ; Wed, 3 Jun 2020 14:05:53 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2, SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.2 X-Spam-ASN: AS15169 209.85.128.0/17 X-Spam-Virus: No X-Envelope-From: Received: from mail-io1-f54.google.com (mail-io1-f54.google.com [209.85.166.54]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Wed, 3 Jun 2020 14:05:52 -0700 (PDT) Received: by mail-io1-f54.google.com with SMTP id k18so3978188ion.0 for ; Wed, 03 Jun 2020 14:05:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Zt7ywIkbExynl0h558PRt078nfEgUO5TgST2DW/9uzI=; b=Mgf+2UzG1PKzvgHP1m126Cc6BE1zD4qEYkaZoiIJEly0icoEEJCUzjtN6ag7nN9Hsj 6ri2U2Gv//30U2mEN1+xC8gO/H/r7cogXE8IwPpTBdBBsN4FDzjiYhcwdNzr5qLfz/iA WwFTqIjMLafF3R4G6h1Yt5qw8M/oox6Djkw9oDx1W/3S4POUzeQ5bZAe29LXwF0Af+hL 7t2LHv1sqA+yWV2QsmU3ea2jVRqWWH4BUlk9+AA3IXZKhwqQAU7zX4HbXpXERYHf709F w7bcnRqaTAc6zp7q7iBUK7cU707uGNw7jNsqHiCY4pZ5fzp7tH71veFT3TpbWik47ylG IGGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Zt7ywIkbExynl0h558PRt078nfEgUO5TgST2DW/9uzI=; b=mGQUgE3q58xfpZ+8GXhl3UOS3ZHh199sEck9qXeIKIx2oSAVJpxvyP+ToPSSklymCm NNCFogvOMDPenGcPWGQZ/A+JfRzfTqbGMj3so/CYqJgiqWKqEG3HskT1kLH9Q6duwzcE TOUVh4EbmOQCRpzvqWetgLQuKK9RmyN5mcHDGZJJvsqZ5h96/4U6ZpAI6eTL9dDULt/r ZqZVWu1pFjlWHCs3ZyuAVTbTHYhTtFuGJhMymYGizXg+1fMdr05K+U1LKZqc/V9bDR4o Tzxh7w1EuZgLUs7NqS2l/PAntjv7pmre8OaJxDAZNLKBprDjY8yr7A2x2CAusd9EsNGJ Iadg== X-Gm-Message-State: AOAM532/OzwpilIMpI+r1zQDc/KHXfjKHsZmkIMlUg/w8dDyBaopvAyV ipvlx7B3+4SPBpKfZYsuYGmwBd9rsTGZ8ksVztA= X-Google-Smtp-Source: ABdhPJwPRzoZrDpydGOWqU8A5fYuirNFnJ2k9sy+N670Y+8+7etrxJb0lS0R2aqO5I5evxZkY2YB/mnjugWS2TcIpf4= X-Received: by 2002:a05:6602:1204:: with SMTP id y4mr1486626iot.44.1591218346744; Wed, 03 Jun 2020 14:05:46 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: Date: Wed, 3 Jun 2020 23:05:30 +0200 Message-ID: To: Dmitry Stogov Cc: Nikita Popov , PHP Internals Content-Type: multipart/alternative; boundary="000000000000515fcc05a734645d" Subject: Re: [PHP-DEV] [VOTE] Ensure correct signatures of magic methods From: carusogabriel34@gmail.com (Gabriel Caruso) --000000000000515fcc05a734645d Content-Type: text/plain; charset="UTF-8" > > On Mon, Jun 1, 2020 at 12:20 AM Gabriel Caruso > wrote: > >> On Sun, 31 May 2020 at 15:57, Nikita Popov wrote: >> >> > On Fri, May 29, 2020 at 6:45 PM Gabriel Caruso < >> carusogabriel34@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 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 --000000000000515fcc05a734645d--