Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:109572 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 1547 invoked from network); 9 Apr 2020 06:53:28 -0000 Received: from unknown (HELO php-smtp4.php.net) (45.112.84.5) by pb1.pair.com with SMTP; 9 Apr 2020 06:53:28 -0000 Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 7948F1804B7 for ; Wed, 8 Apr 2020 22:21:49 -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, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,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-pl1-f173.google.com (mail-pl1-f173.google.com [209.85.214.173]) (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, 8 Apr 2020 22:21:49 -0700 (PDT) Received: by mail-pl1-f173.google.com with SMTP id t4so3409379plq.12 for ; Wed, 08 Apr 2020 22:21:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:autocrypt:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=AvnvKWfnSO2cZxYQMRW1FAghbm/7UMn1Y9MoqzBdnkY=; b=WeLsKJf82gffh+JNvDrNlUaKNQoyo4ep2hq7mlRY687HJcroEeJZuZnHG0OUs9k/XF NWj/pQhjRV5bIqnIJq1swDlXv6BaOMr3LDLpSNelGtyNbMDEOG3lxVNL3IToyRcplKBm 63ou9E81XUoyT5ZG0XgNA+RhQMwe5Hzr95MNZJIPU2gZK4UTMwwA6hOh3f74uFnRqYv+ WPBvk7jOefc6MhAkoxnH/wYjKAjdWdY0Dt+d8i4y5c0Qf7bYqQxXpG2gTWEjC4NGyK++ oXzU3WXy0VMY/Wxbf8Fz71QbrEa24EeyGqRVXZRMbrqPQCLRebiUFP2/8jzPJT/2f4Vz qHqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:autocrypt:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=AvnvKWfnSO2cZxYQMRW1FAghbm/7UMn1Y9MoqzBdnkY=; b=lY7CRNkdpLss0PDt9BxNX1eIjXp8fHedYMWHYtKZLS9u8B9+Z8jONCQoZjGzEabJ4r ERLjVUdDbrDpvuYl+OZVWEWAB3bMb2sn4osNhkvuJJpwQUgx2dhFQYWbTqKaeMawUO25 dWsfeXJ5i3Df9CtYCeQHN0g3qDOB+OtZCI7zSJdciNiTJrPEHZXvO1dau8cApzYDB+5X sW7FS/KbpboeFDVgT3WAPOZ3jVxwNyHUVecZj/t81pHVg8P4CeEfzDA5NGD4ViBTR3KE B2YoHVyuVn3XzT+BJVm8UhwvK/sA85He5KyIIrcUmljGEnw4d4XZtgUf8fkV8Kf1Be0d TVLw== X-Gm-Message-State: AGi0PuZPmiAhNSEQhCQpGPEn9//7Q+Z6YkfrTVAAfxkXZITkeKdst8p6 /IxxtBZ4JxciB73PEd1gaafG3govGQ== X-Google-Smtp-Source: APiQypJVyxZM8vA449bKQMXnCjXOaLn1y1JgnhXS3V0sBX+c4xdJixGP1UCwkvgz4LLIBlj/30oCTQ== X-Received: by 2002:a17:902:ea8a:: with SMTP id x10mr10744164plb.328.1586409704177; Wed, 08 Apr 2020 22:21:44 -0700 (PDT) Received: from Stas-Mac-2.local (ec2-34-209-88-149.us-west-2.compute.amazonaws.com. [34.209.88.149]) by smtp.gmail.com with ESMTPSA id c207sm18276442pfb.47.2020.04.08.22.21.42 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 08 Apr 2020 22:21:43 -0700 (PDT) To: Nikita Popov , PHP internals References: Autocrypt: addr=smalyshev@gmail.com; prefer-encrypt=mutual; keydata= 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 Message-ID: <663d3596-824c-f98e-2ddd-6d912f6a94d8@gmail.com> Date: Wed, 8 Apr 2020 22:21:41 -0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Thunderbird/68.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [PHP-DEV] Resurrecting named parameters From: smalyshev@gmail.com (Stanislav Malyshev) Hi! > 2. Throw a notice if a parameter name is changed. While LSP violations are > normally fatal errors (in PHP 8), we could use a lower-severity diagnostic > for this case, that allows code to still run, but makes developers aware of > the problem. (It should be noted that automatic fixup of parameter names > using tooling should be fairly easy to implement.) I think we should have a notice for now, and eventually when people are used to it upgrade it to an error. > The larger problem is that internal functions don't have a well-defined > concept of parameter default value. Parameter defaults are implicit in C > code, and sometimes based on argument count checks. When named parameters > are involved, one generally cannot assume that if a later (optional) > parameter is passed, all earlier (optional) parameters are passed as well. IIRC I did some work on that when making the skipped parameter RFC, but I think we have no choice but to make all internal functions we control have proper default implementation. Older modules may be lagging though, so another option would be to add some kind of flag to internal functions that would block named parameters if not set, and make extension writers fix their functions and then set this flag explicitly. Of course we'll set this flag for all functions in core, after fixing those of them that need fixing. Maybe not a flag but using different macro/API function, etc. - the idea is that some explicit change would be needed. Yes, that means additional work... More complicated but milder option would be to only check the flag if there's a "gap" in parameters - but this may have higher learning curve as extension writers wouldn't even know their extension needs work until someone skips a parameter. -- Stas Malyshev smalyshev@gmail.com