Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:123483 X-Original-To: internals@lists.php.net Delivered-To: internals@lists.php.net Received: from php-smtp4.php.net (php-smtp4.php.net [45.112.84.5]) by qa.php.net (Postfix) with ESMTPS id 24D9D1A009C for ; Sat, 1 Jun 2024 01:41:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1717206140; bh=PME5s8qo+HupV/24tcal9NuFZ54NLmqZ26qE8FAfqow=; h=References:In-Reply-To:From:Date:Subject:To:From; b=BaH01S8qhgDwAEolmy91nWYKwdPQXNR/ooskR2W9syY+72BBy2o8EeFC7yQtEGcGc iwvCp6HZ/6+LrI0ogiWSweYfeX3Z2ba563yjjdhjB3OABF28FUDJ3+0mZt3W4KbtNT /zL8CxUb9s2adL3mW6s8xLSwio9u0ysO/l3X8VeFWYwbSn22ll1/chWQQvdP43qKe6 Uc1XI4JgIpraTRoZLUHa8GKt7CjbIzNzdI3isH/vkDDqxDWics/FLXN0L4FViLQVUM JORRS5pKRYhkVzAmwwMW32MrsionhFiAu3tqVbOXQt2BxwH+FT9/eiw9D6Bh8s/Qbr raT43zPsdAcYQ== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id C05CA18005B for ; Sat, 1 Jun 2024 01:42:17 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-13) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_50,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,DMARC_PASS,FREEMAIL_FROM, HTML_MESSAGE,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=4.0.0 X-Spam-Virus: Error (Cannot connect to unix socket '/var/run/clamav/clamd.ctl': connect: Connection refused) X-Envelope-From: Received: from mail-vk1-f177.google.com (mail-vk1-f177.google.com [209.85.221.177]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Sat, 1 Jun 2024 01:42:17 +0000 (UTC) Received: by mail-vk1-f177.google.com with SMTP id 71dfb90a1353d-4e740924a1dso710274e0c.0 for ; Fri, 31 May 2024 18:41:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717206074; x=1717810874; darn=lists.php.net; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=sABhMlgOuyEpTeDavenNTjnlinQ/G47soN7gb/2Pu2Q=; b=S3AjKmvSJD1aavfPWYBje1HxMxeUxKXwL3KLvRBs05MCXCSFVTy31YvSqPAH6nhBZz BxmuAe/jQiwRSE8XFccC2FPBopLoVtLOyTsZf2CLt7JtwR1gFrb37FNeLPjv7MpZ37a7 LMRI+Vqe+/34c400DK6VySXINr5cBR61njzv/l/gi73els4QpkKvzyOKdTn+rdWO/8aL 0sUqv9OzHtRFIBkSJ0wHl3x7gaRG+PINhZSBCJlwMtjzp5Us8hvu/32SVeih/6ePA+bV qAJwhZZwKxVnRj2VW/Sn/d1iddHdflQfRanCgYPY5e716ADPpp5aZIOp6hveHVCQm0TN w8aw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717206074; x=1717810874; h=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=sABhMlgOuyEpTeDavenNTjnlinQ/G47soN7gb/2Pu2Q=; b=I0yY60Sy22tHm3AhYe0PKGFajynBiorfc+UIpHadp8DNts1kAyTihSip3y/+SoyWsM 3UBfSIswCopVNiyZwe8zLJnejRRoF1Og1Err0/HO+ZM+g/kH2pnjFBAIpMOEOp2MbDro W2oARfDu9tXie5CmIptsKcnAVtlPRjwXOKgarA40guZr+tB+jnfNsT98P5Ml39qgly7h e/HY5Y/Y4oLDQ4mCi+D9pSJZam2/4/55Xzk02ZTY17Gn9sFRZ782iTg07gSXGsvGpXMH 2hUUhN7Qs27pIigyeZ/hvARgyIN3ihx2EymzUD/Ck9p1xo1wK1xw1pt/G7rD2AqcIEcV M0FA== X-Gm-Message-State: AOJu0YwM656F9znywXk+S0HruCgFRsozvvyzqVUngADjqcrW5V/Nj9OI +r0A0pxCXDrdoLq7MJMjYRdbf+YWJ+eqKdE6CtKTYmd+43/F71KllAE15O+H7NS7HhGHsHKW96L fP1pANMY1FykvUTEAKVy2/USNtmJkPoeYFuE= X-Google-Smtp-Source: AGHT+IECmLpb3Yuww21eXoMik4bQViON6ozMGLDIHS/eP82Te66sXPo6JOr+ZwpaXjUnjqlOzMR0IhdHS7NUSIfZ7Uw= X-Received: by 2002:a1f:72c6:0:b0:4d8:5e2f:c235 with SMTP id 71dfb90a1353d-4eb02c9fc0dmr3884268e0c.0.1717206074391; Fri, 31 May 2024 18:41:14 -0700 (PDT) Precedence: bulk list-help: list-post: List-Id: internals.lists.php.net MIME-Version: 1.0 References: <0a6a61cd-f203-4dea-a7f8-97e6b885c52d@app.fastmail.com> <734bb8e8-2fdf-4e50-9039-e53c99ee4930@app.fastmail.com> In-Reply-To: Date: Fri, 31 May 2024 22:40:34 -0300 Message-ID: Subject: Re: [PHP-DEV] [RFC] Asymmetric Visibility, v2 To: php internals Content-Type: multipart/alternative; boundary="000000000000120fd30619ca3270" From: ericklima.comp@gmail.com (Erick de Azevedo Lima) --000000000000120fd30619ca3270 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable > So we feel the best way forward is to make the following changes: > > * private(set) implicitly means "final". (You can declare it explicitly if you want, but it isn't necessary.) > * Make readonly incompatible with aviz again. I'd make readonly incompatible with aviz. Readonly props have its "peculiarities" that are being (found and) changed on each version. If you don't want to change your value ever, use readonly. If you want more flexibility, use aviz. Making workarounds on the aviz RFC so it can be compatible with readonly is not worth it, IMO. Best regards, Erick Em sex., 31 de mai. de 2024 =C3=A0s 20:53, Claude Pache escreveu: > > > Le 31 mai 2024 =C3=A0 18:08, Larry Garfield a = =C3=A9crit : > > So we feel the best way forward is to make the following changes: > > * private(set) implicitly means "final". (You can declare it explicitly > if you want, but it isn't necessary.) > * Make readonly incompatible with aviz again. > > Thoughts? > > > > After reflection, I don=E2=80=99t think that we need to make readonly inc= ompatible > with aviz, even with the current semantics of readonly (at least logicall= y; > no idea about implementationally): > > * legacy-readonly properties could keep their own peculiar > `private-overridable(set)` if they want; > * aviz-readonly properties have, by definition, one of `public(set)`, > `protected(set)` or `private(set)` marker; those will work regularly, > including the implicit `final` attached to `private(set)`; > * a non-aviz readonly property could not be redeclared in a subclass as > aviz-readonly, and vice versa. > > =E2=80=94Claude > --000000000000120fd30619ca3270 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
> So we feel the best way forward is to make the following c= hanges:
>
> * private(set) implicitly means "final&quo= t;. =C2=A0(You can declare it explicitly if you want, but it isn't nece= ssary.)
> * Make readonly incompatible wit= h aviz again.

I'd make rea= donly incompatible with aviz. Readonly props have its "peculiarities&q= uot; that are being (found and) changed on each version.
If you don't want to change your value ever, use readonly.
If you want more flexibility, use aviz.

=
Making workarounds on the aviz RFC so it can be compati= ble with readonly is not worth it, IMO.

Best regards,
Erick

Em se= x., 31 de mai. de 2024 =C3=A0s 20:53, Claude Pache <claude.pache@gmail.com> escreveu:


=
Le 31 mai 2024 =C3=A0 18:08, Larry Garfield <larry@garfieldtech.com> a =C3= =A9crit :

So we = feel the best way forward is to make the following changes:

* pri= vate(set) implicitly means "final". =C2=A0(You can declare it exp= licitly if you want, but it isn't necessary.)
* Make readonly incompatible wit= h aviz again.

Thoughts?


After reflection, I don=E2=80=99t think that= we need to make readonly incompatible with aviz, even with the current sem= antics of readonly (at least logically; no idea about implementationally):<= /div>

* legacy-readonly properties could keep their own = peculiar `private-overridable(set)` if they want;
* aviz-readonly= properties have, by definition, one of `public(set)`, `protected(set)` or = `private(set)` marker; those will work regularly, including the implicit `f= inal` attached to `private(set)`;
* a non-aviz readonly property = could not be redeclared in a subclass as aviz-readonly, and vice versa.

=E2=80=94Claude
--000000000000120fd30619ca3270--