Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:124611 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 6B9491A00B7 for <internals@lists.php.net>; Fri, 26 Jul 2024 12:59:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1721998847; bh=y87PYyXwFiFaNYpNDdrRleCCtJ15zDRKNyTGljm5j2g=; h=In-Reply-To:References:Date:From:To:Subject:From; b=PO1MhWMnxvJrgbSAii/8uI9jBe7D5JmgoLSF/C5ljowTp9nc2OW/Pluu0GJJaXfi6 QHt0HYLXIf73Y3C8TlBOjDtgDSDaRDSc8BGR3vbl0luoKd4qyxcW/rDbjBI3BZ95uE XwEs41affd7NsxA8zZzQUICVttbmta69joNaTzpM2opxAZgpTkSudi14axXR6FVCDC TUFCAUv6zy5h6HZr/q71HmhSZ+TF2zScPGmMz1HXQUtvxU9ReejbrFN5IN8CK3BfE9 rtwdyW1OB5DmTJ4eIXXv/xVXlg9QbwfRhs7iirVU8MTdOiskp7iYzZNFMa8cYGbEad 96VMg8ScyQ0ag== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id EF32218003A for <internals@lists.php.net>; Fri, 26 Jul 2024 13:00:46 +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.1 required=5.0 tests=BAYES_50,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,DMARC_MISSING,HTML_MESSAGE, RCVD_IN_DNSWL_LOW,SPF_HELO_PASS,SPF_PASS autolearn=no autolearn_force=no version=4.0.0 X-Spam-Virus: No X-Envelope-From: <rob@bottled.codes> Received: from fhigh1-smtp.messagingengine.com (fhigh1-smtp.messagingengine.com [103.168.172.152]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for <internals@lists.php.net>; Fri, 26 Jul 2024 13:00:46 +0000 (UTC) Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailfhigh.nyi.internal (Postfix) with ESMTP id 3399F114019F; Fri, 26 Jul 2024 08:59:11 -0400 (EDT) Received: from imap49 ([10.202.2.99]) by compute3.internal (MEProxy); Fri, 26 Jul 2024 08:59:11 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bottled.codes; h=cc:content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm1; t=1721998751; x=1722085151; bh=GSx1KZdw5z 5mC+v1q0ScaHdyM+Ux8NSDVHNO+fsQqiE=; b=Yrqb63Cs8D8oi48SBzVS6GcHd9 Zemm/lunclZ26cuSNTvBbTvTD8LOWMm4gTv1Uir5cbpuzAeyICcg5CPFciQJSZ4z G81FVQtFpGwwjpd6Lp80utC72anDup2kJih9gTGaD0B3LCKO8X0r8J2m6E5V+NFz NA+kylyFkYisQVP/hID+5xaWm8ozszbspNYLyupZbDeeoRbNyVVNk4UKZ8NWQUiy 49BQsNS8FUC7Q3AOa6Yz/VPvGD/Kp03dc+ZvkE5oA9KLz95tjKPe4EfrN3HImujG qRiuLqgMEyXcZiSxkpJhzR/mTu+cYX92Kg+Zi5rYQQkFf2movRHWeMyoM0tw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm3; t=1721998751; x=1722085151; bh=GSx1KZdw5z5mC+v1q0ScaHdyM+Ux 8NSDVHNO+fsQqiE=; b=E0pPKqb90Fn1U34Mm2sJpxXiwqfRgJ627/OqNm7tKRZg K1ey/aBlqjCtyhB3Rjqqmq+PbG6Baks6Yem7xH3NuIuGl6Krxre/DWnu4a5lND54 P0ja28506/0vpFrYGKNgKove6+SjxgtGulebi7OF1Q1JUwAR5SSYREeSLD4lBCzs FOAZsbQiuJow+C9yNeri2B0d/xqnBSiyVd11Dhl34ldI5nBeIf/LzqrTE+U8P6I7 ZwHjJhoJ6pD/WLoDsP1W0372KfpxV2mfB60M2osqBLxUYL7QH/mRvwJliIqC7WVh eXaHZUi2mw+QUXfN3kwFyfGYxvZCqzuEY33/4cTYjA== X-ME-Sender: <xms:np2jZtbwp8NRr-yHmVBtvJ1FwZH29Cb1d5WVFrtsCdQViba80AL5eQ> <xme:np2jZkbrHxLPSjMnmWDRAmP8aagy5oyAvABLzHSraXUKyim9NQfbYkyTk9Z_9AkXI _UeWfjPXCJ1yIbzRrg> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrieehgdeitdcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefofgggkfgjfhffhffvufgtsegrtderreerreejnecuhfhrohhmpedftfhosgcu nfgrnhguvghrshdfuceorhhosgessghothhtlhgvugdrtghouggvsheqnecuggftrfgrth htvghrnhepfeefudfhudduieekkedugffhudfgleejgfekgefhvdeikeelvddvjeehteeg teegnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomheprh hosgessghothhtlhgvugdrtghouggvshdpnhgspghrtghpthhtoheptd X-ME-Proxy: <xmx:np2jZv9o4PTNQUX2PCUgoOtITsWBWOcK0xxKBSZl_6zigi0KM-WLOA> <xmx:np2jZro62RMglXwpGeg2LdIJN5zZYlr7jNqYEWVtVVqEpiy9plmElQ> <xmx:np2jZorh_EknZtsEgnsLeQGOjEYcPvDa-9qu-0oUtBoiZMGqyl1ssA> <xmx:np2jZhSgbMsFdRm3IB00kgqogsx7eyX8GEPZw18-oO5JGit1PcUx1g> <xmx:n52jZlAjs5h7kGpoUur2Oa1MoHqhKNugjaZWk5wv1I9woRLZxijlFfZF> Feedback-ID: ifab94697:Fastmail Received: by mailuser.nyi.internal (Postfix, from userid 501) id B31CC15A0092; Fri, 26 Jul 2024 08:59:10 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface User-Agent: Cyrus-JMAP/3.11.0-alpha0-582-g5a02f8850-fm-20240719.002-g5a02f885 Precedence: bulk list-help: <mailto:internals+help@lists.php.net list-unsubscribe: <mailto:internals+unsubscribe@lists.php.net> list-post: <mailto:internals@lists.php.net> List-Id: internals.lists.php.net x-ms-reactions: disallow MIME-Version: 1.0 Message-ID: <161d5b04-4d94-47e9-a248-61639d688381@app.fastmail.com> In-Reply-To: <4e7714cb-0d88-43f5-aa30-9adb799e0b28@seld.be> References: <0a6a61cd-f203-4dea-a7f8-97e6b885c52d@app.fastmail.com> <b5c0be62-ea39-47fb-a8f8-ab6cd5ee3dab@app.fastmail.com> <CP8P284MB2148CB72E1A6A7AB5F29E8F093AE2@CP8P284MB2148.BRAP284.PROD.OUTLOOK.COM> <a3154cde-73ca-4b8e-bf90-b9aeabd5fbce@app.fastmail.com> <66c4ac1c-b3d7-4b20-b986-1fe1a464f485@app.fastmail.com> <4e7714cb-0d88-43f5-aa30-9adb799e0b28@seld.be> Date: Fri, 26 Jul 2024 14:58:48 +0200 To: "Jordi Boggiano" <j.boggiano@seld.be>, internals@lists.php.net Subject: Re: [PHP-DEV] [RFC] Asymmetric Visibility, v2 Content-Type: multipart/alternative; boundary=69237eddce364fb98269ec858beb99b0 From: rob@bottled.codes ("Rob Landers") --69237eddce364fb98269ec858beb99b0 Content-Type: text/plain;charset=utf-8 Content-Transfer-Encoding: quoted-printable On Fri, Jul 26, 2024, at 13:36, Jordi Boggiano wrote: > On 21.07.2024 11:21, Rob Landers wrote: >>=20 >> On Sat, Jul 20, 2024, at 23:51, Larry Garfield wrote: >>> On Sat, Jul 20, 2024, at 7:22 AM, Rodrigo Vieira wrote: >>> > Will the alternative syntax on hook not even be put to a vote? >>>=20 >>> It was, a year and a half ago when Aviz was first proposed. The pre= ference was split, but leaned toward the prefix-style syntax. So we wen= t with that. I don't think we'll ever get everyone to want the same syn= tax, but we're using the one that was both somewhat more popular, and (a= s discussed in the RFC) arguably superior. >>>=20 >>> As the "comments in yield from" thread has shown, *any* even slight = change to PHP's syntax will require work from static analysis tools. Th= at's the nature of the problem space, regardless of the syntax specifics. >>>=20 >>> --Larry Garfield >>>=20 >>=20 >> Just to play devil=E2=80=99s advocate, it was also before we had prop= erty hooks who advertised itself as a way to =E2=80=9Cwrap and guard acc= ess to object properties=E2=80=9D but we are simply ignoring their exist= ence here. >>=20 > Just to compare them, because my initial gut feel was to say "yes plea= se just put this together with hooks".. >=20 > As far as I understand these would be the two options? >=20 > class C { > public protected(set) $answer { get =3D> 42; set =3D> { $this= ->answer =3D $value * 2; } > public private(set) $publicReadOnly; > } >=20 >=20 > class C { > public $answer { get =3D> 42; protected set =3D> { $this->ans= wer =3D $value * 2; } > public $publicReadOnly { private set; } > } >=20 > And now that I see it spelled out more, I do agree that while it appea= rs a bit more verbose, and this "(set)" looks odd at first, having all t= he visibility upfront is a lot clearer than having to read through the h= ooks to see what visibility applies. On a large property hook that potentially span hundreds of lines, I'd ra= ther only need to scroll up to the "set =3D>" to see how it is set vs. g= oing all the way back up to the property itself. --69237eddce364fb98269ec858beb99b0 Content-Type: text/html;charset=utf-8 Content-Transfer-Encoding: quoted-printable <!DOCTYPE html><html><head><title></title><style type=3D"text/css"> p.MsoNormal,p.MsoNoSpacing{margin:0}</style></head><body><div><br></div>= <div><br></div><div>On Fri, Jul 26, 2024, at 13:36, Jordi Boggiano wrote= :<br></div><blockquote type=3D"cite" id=3D"qt" style=3D""><div class=3D"= qt-moz-cite-prefix">On 21.07.2024 11:21, Rob Landers wrote:<br></div><bl= ockquote type=3D"cite" cite=3D"mid:66c4ac1c-b3d7-4b20-b986-1fe1a464f485@= app.fastmail.com"><div><br></div><div>On Sat, Jul 20, 2024, at 23:51, La= rry Garfield wrote:<br></div><blockquote type=3D"cite" id=3D"qt-qt" styl= e=3D""><div>On Sat, Jul 20, 2024, at 7:22 AM, Rodrigo Vieira wrote:<br><= /div><div>> Will the alternative syntax on hook not even be put to a vote?<br></div><div><br></div><div>It was, a year and a half= ago when Aviz was first proposed. The preference was split, but leaned toward the prefix-style syntax. So we went with that. I don't= think we'll ever get everyone to want the same syntax, but we're using the one that was both somewhat more popular, and (as discussed in the RFC) arguably superior.<br></div><div><br></d= iv><div>As the "comments in yield from" thread has shown, *any* even slight change to PHP's syntax will require work from static analysis tools. That's the nature of the problem space, regardless of the syntax specifics.<br></div><div><br><= /div><div>--Larry Garfield<br></div><div><br></div></blockquote><div><br= ></div><div>Just to play devil=E2=80=99s advocate, it was also before we= had property hooks who advertised itself as a way to =E2=80=9Cwrap a= nd guard access to object properties=E2=80=9D but we are simply ignoring = their existence here.<br></div><div><br></div></blockquote><p>Just to = compare them, because my initial gut feel was to say "yes please just put this together with hooks"..<br></p><p>As far as I = understand these would be the two options?<br></p><pre class=3D"qt-moz-q= uote-pre"> class C { public protected(set) $answer { get =3D> 42; set =3D> { $= this->answer =3D $value * 2; } public private(set) $publicReadOnly; } class C { public $answer { get =3D> 42; protected set =3D> { $this-= >answer =3D $value * 2; } public $publicReadOnly { private set; } } And now that I see it spelled out more, I do agree that while it appears= a bit more verbose, and this "(set)" looks odd at first, having all the= visibility upfront is a lot clearer than having to read through the hoo= ks to see what visibility applies.<br></pre></blockquote><div><br></div>= <div>On a large property hook that potentially span hundreds of lines, I= 'd rather only need to scroll up to the "set =3D>" to see how it is s= et vs. going all the way back up to the property itself.<br></div></body= ></html> --69237eddce364fb98269ec858beb99b0--