Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:119712 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 18406 invoked from network); 15 Mar 2023 17:21:34 -0000 Received: from unknown (HELO php-smtp4.php.net) (45.112.84.5) by pb1.pair.com with SMTP; 15 Mar 2023 17:21:34 -0000 Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id A1D7F18037E for ; Wed, 15 Mar 2023 10:21:33 -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=-0.7 required=5.0 tests=BAYES_05,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE 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-pf1-f177.google.com (mail-pf1-f177.google.com [209.85.210.177]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Wed, 15 Mar 2023 10:21:33 -0700 (PDT) Received: by mail-pf1-f177.google.com with SMTP id b20so12172568pfo.6 for ; Wed, 15 Mar 2023 10:21:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1678900892; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=RRpvaiMQTEg8N7PpCXcP3hjtDzQNsD3k7CqWk61bPNk=; b=e4b/jsapXzUxYWNYkAFEgRxs4D5O9Ekx/gwy+EHZ9JCLTyMOFKk4sjvqAmo9R/Vvr4 NI38jMCR3UToWwzH2TaP515NfgvvISa6AJymtn6odJETgAfA1i9LSFDNe6HDIchtuQQr fZ2H6Tl2jHCh/7L6y5Sj0L6p2YTD58bBKuYwItic/uLv9Ok82UXOCHEoLQAcpBSHNiC6 8zVLLlbXoZ5K+nK9oIO5+5xOSeecUahPgSX2Y9GjkkjtSrGLMyUeD5+WKc46pmnZsTQp wneoKqaJm/flX4sEuHROQzj1wPVgF9Pl0XL3mESlLLyUy3uD8FyX3hHuEBZBMleBBZeO +qkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678900892; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=RRpvaiMQTEg8N7PpCXcP3hjtDzQNsD3k7CqWk61bPNk=; b=H7dODUqV2tbHVS17VcIlQw6rLbkNMSeKoj0ESFaIPPygwU7vE9UwZp5E0EeitTzAAt QL8GFknNV10jdSYEp60EvHnlfqwTDVrZN+yGnQAODO6p/pk2v6BeFiv1FjWedUrwxeop 2pzSqqM0bIslUafLmgozo0Ole9MMGljS1vegTT7MnbGx7KfzzyxkZVCYaAB0EBjMPhsz IpdxR/YM0GE6sn9XW1KIrc6KeAMEHKNFWVahtqtq0yi0TkTSR64WU/th6CYZOHwpVcZW /LfxJzIdUfAfNpCcDObkOdnvdkEPHoLjh8oj5M5igKBWZrIXW57HOBFqUYg+qiM86ub/ NEWg== X-Gm-Message-State: AO0yUKVMD89V3N5SO0DP9xnpvqgM9PROjzeuJWYe7uXT+ZhVJXNR2oLz /OLemL+QLNg3UotDFi0vPQN0Dz7hvtOY+lFKlHk30C0jsEs= X-Google-Smtp-Source: AK7set8WU6T/fzL+kb57T2uIeXwywJCLG1oYI/AfBm6Dc/dr9UNXnL/AEX5r1cwr7qANaHeMRnGrBqgeue7Gx3/0zCs= X-Received: by 2002:a05:6a00:bcc:b0:624:5886:4b4b with SMTP id x12-20020a056a000bcc00b0062458864b4bmr162486pfu.5.1678900891796; Wed, 15 Mar 2023 10:21:31 -0700 (PDT) MIME-Version: 1.0 References: <57ed96c2-0547-c905-1c6f-7433ecb4a1b5@bastelstu.be> In-Reply-To: <57ed96c2-0547-c905-1c6f-7433ecb4a1b5@bastelstu.be> Date: Wed, 15 Mar 2023 18:21:20 +0100 Message-ID: To: PHP internals Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Subject: Re: [PHP-DEV] [RFC][Vote announcement] Arbitrary static variable initializers From: tovilo.ilija@gmail.com (Ilija Tovilo) Hi Tim > > https://wiki.php.net/rfc/arbitrary_static_variable_initializers > > https://externals.io/message/118976 > > There is an unresolved "question": > > > Side note: It's been suggested that expressions that can be evaluated c= onstantly continue to do so. This would mean that some expressions in getSt= aticVariables are evaluated and some are not. The upside is that this would= avoid the backward incompatibility. I will check if this is technically fe= asible. Ah, thanks for catching this. This has been partially implemented. PHP will attempt to evaluate the constant expression at compile time. If successful, the value will continue to be available from ReflectionFunction::getStaticVariables() right away. Only when the expression isn't known at compile time (including class constants from other files) will it contain null until the function is called. This reduces the BC incompatibility but doesn't completely avoid it. Ilija