Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:115838 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 36680 invoked from network); 25 Aug 2021 21:11:06 -0000 Received: from unknown (HELO php-smtp4.php.net) (45.112.84.5) by pb1.pair.com with SMTP; 25 Aug 2021 21:11:06 -0000 Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 221561804BD for ; Wed, 25 Aug 2021 14:45:22 -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=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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-lj1-f169.google.com (mail-lj1-f169.google.com [209.85.208.169]) (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, 25 Aug 2021 14:45:21 -0700 (PDT) Received: by mail-lj1-f169.google.com with SMTP id d16so1172210ljq.4 for ; Wed, 25 Aug 2021 14:45:21 -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=r99X8Dd+FMfrDMXjDj8JFDWqhM1lfuuUSXeLha1RKqo=; b=frdQUrS87fOqpOfHdPvvukl9Ow/LJKlNoTbsOBFnz1s/GC4877FKYwgLekBQQ3Sgwb kO9agqm4Eq430FdXZ2qrOgwsUFV39Nhic6X5NJbfGxKwMN+AcM4u63jxynzKYle0GNS/ cMh8EgURAgIo8fO90KHtoe05eVdEodqCyJ/I3oQzz9o1YaA415jzFGsdJ3UTY7K/TcDt LIYOPMfgR7synYWTJJSaeLxhTDCLrIYgFoaWrmnlCwEQpME1bogDtvn4rG7A+lL0u/ob RX8O2ziKPdMgz5BEgmscsg+O8Nef3NDvWnfT54GDnTvZ/yS+fYlWHpeA86FEn6ACRZoT cpJw== 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=r99X8Dd+FMfrDMXjDj8JFDWqhM1lfuuUSXeLha1RKqo=; b=VU9M5bb0/MCFRCXvecrKGOtD82D/o09PaFFF2r/ClIxP9JYM5wMU0QZEkE4sHmnyig xtWueNSTITLMlxjEZ7OTHB3PypaB6slw10kITvrMWRtQISM1Fj8WedtGPQaL4DjA/BiW ljdtoZ6KDxR+3NRNujj+HOaj9MfCDbkq+0w/ENS59Yyj7crVvMf5xCqibJWQHOp3HtUJ kYz784tQK3deBy8whACcjA6Rq6uIWM2ZDTnoi/XZqswbpogKfEWZqajiD5ToDg51LdOc J2Yqb8oIEmb+nnXQaNBUh61zZNsNtx+uRVhR8hJwOetNLhsShbpJvbzi0GbAjrCs1oOi 1oYA== X-Gm-Message-State: AOAM530khA4QB3vHR0zaDmyDExgvoZjIfOGFjoXwxmoj2wwvYkLNHWR/ 7tkglhoBcX/tNiqzUZb4AFID6bZ8D8vhIDQn5o+Qc7omVCM= X-Google-Smtp-Source: ABdhPJyc9ipT4M9wJ3OobyB0k1P6ZLcMIZRZY5Z5hbiLGaneHznOWsYhj9eHLL27mwQuBVBc4elOIpwlIbrAwycCY1g= X-Received: by 2002:a2e:7810:: with SMTP id t16mr289981ljc.24.1629927919225; Wed, 25 Aug 2021 14:45:19 -0700 (PDT) MIME-Version: 1.0 References: <6126afe2.1c69fb81.94ef0.fa92SMTPIN_ADDED_MISSING@mx.google.com> In-Reply-To: <6126afe2.1c69fb81.94ef0.fa92SMTPIN_ADDED_MISSING@mx.google.com> Date: Wed, 25 Aug 2021 14:45:02 -0700 Message-ID: To: Ben Ramsey Cc: PHP internals Content-Type: multipart/alternative; boundary="000000000000a28f9005ca692a1d" Subject: Re: [PHP-DEV] [RFC] Deprecate dynamic properties From: jordan.ledoux@gmail.com (Jordan LeDoux) --000000000000a28f9005ca692a1d Content-Type: text/plain; charset="UTF-8" On Wed, Aug 25, 2021 at 2:02 PM Ben Ramsey wrote: > I'd feel better about this if we had that citation. In modern code, I > agree they are probably rare, but I think there's a lot of legacy code > that makes heavy use of dynamic properties as an important feature of > PHP. (I'm working on one such project right now.) > I think a question worth asking is whether or not codebases such as that would have other similar challenges to targeting the intended version. If the actual removal of dynamic properties, as opposed to deprecation notice, is targeted for 9.0, it would be safe to assume that older codebases will already need to do significant work to migrate to that version. I don't say this to mean that BC breaking doesn't have an impact, but rather, it's important to consider if other changes already force design updates to old codebases when considering impact. We would want to make migration to newer versions as easy as possible, so providing an escape hatch makes sense. But I think most developers would anticipate that moving major versions might result in changes such as this that could be breaking. Since __get/__set provides an escape hatch and stdClass does as well, I personally would think that the possible internal optimizations it enables which Nikita detailed are worth breaking some legacy userland code for a major version increment. Jordan --000000000000a28f9005ca692a1d--