Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:127572 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 lists.php.net (Postfix) with ESMTPS id EF1E61A00BC for ; Tue, 3 Jun 2025 20:18:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1748981814; bh=NyTJppGRmGj9iQtWIM+fw9jdcwAPx2W2HVBQJEzbd04=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=ch5Cgg8auYMCvuHTSr4oplbYCc63QFm8CtOvJCoDSZqqDrJIXwyogA89t8jOycQl4 zjLfbuRtjFsm2/gBmN98PyDgifVIUvb4Y4zQGkHNf19CLeIiUW1RwqgbPX8fR8pkXc FOkSWVW15ak/Phe4rT+EQeGSD1MD4ApATZf3SxS6oib8dEHwLCncpbctqqO7Ijt2qH Z/oZ3bdODeDsQralKWtnrgrSeYnSpTMDZYBTJiGEcWzoCAxS5954CMaQQ6ABiI++Tp 6ID6YeAWeSUO/36EtrnkWaCNVubV78g6o2wYCKQtDDsswX5BZ+AeGJ34ilzFk4c8b7 dxsDRY/oMeDDQ== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 0C1CD18005D for ; Tue, 3 Jun 2025 20:16:54 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=-0.4 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 autolearn=no autolearn_force=no version=4.0.1 X-Spam-Virus: Error (Cannot connect to unix socket '/var/run/clamav/clamd.ctl': connect: Connection refused) X-Envelope-From: Received: from mail-qv1-f45.google.com (mail-qv1-f45.google.com [209.85.219.45]) (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 ; Tue, 3 Jun 2025 20:16:53 +0000 (UTC) Received: by mail-qv1-f45.google.com with SMTP id 6a1803df08f44-6f0cfbe2042so2780416d6.1 for ; Tue, 03 Jun 2025 13:18:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1748981937; x=1749586737; darn=lists.php.net; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=SYZFd+839qpqHi9Wr4KYyHnsz2SktN5vaqR4zIrNIzc=; b=EHODf3vrexfojG5VT5qb/ZrgyrK5PnDi/JJlTtuxn1IEKAxAVhmgLq1wgzrT7E6pUK 8tmusFDRtyL9bxUaCsYW7ctRntfCez7MrFTLt8Wz663ljnxe7dvTplnrLG8mGOpwyY8B P6gBnTvnGRklxggoQBz+4DcRnI7rvswXusjtplWywPUoBcsol1Ra9dRKmVjNcGYX4+AQ kpglWVPppzAUuHj7L19yaNJmNVmUU5Ro32jVpWWHhHYChQnmGWxVR0GukpFz/TzDTvWH K+iFBw/b5Tl6y3u8bmlJ5R7QYMy249XTcNqkCMBZIQ9uPKoEQVBX0Ag1h5YfByom6EUr KgCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748981937; x=1749586737; h=cc: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=SYZFd+839qpqHi9Wr4KYyHnsz2SktN5vaqR4zIrNIzc=; b=w/ITqd5uYSOjAHXFIAxxBVqli0vHulUT7HEf+lGFFSHe31a08x2kDXVMXqq80RuAUx yDL6eOUnkQ8gNwB8crXLpVcPhf8PEjj8SOJ1BkQECcEc4sm3pl51PUFYRAFN5mWvxZ63 KxkXWJxmGHAFbAicypsPHQETj1FRFqkJpab+t3V3L5zDYyhb3jq3T26WotsRrPvaO3h/ xiTvgnER3O02gZ2NMtRNHvXtKyBVe1h2Vv71oSnPfXq9vR9Rvak2upGlfEazPfrVws/S zjdLYmArzCibiGFB2aRr9MjtWFqQ7Bpory5QfDifBl/PmaqY/837BsB6ens/fw/mVwLl VgUw== X-Gm-Message-State: AOJu0Yytf/Ddj3WpGsFWYp0mSOSQeUDnYfId7HtVoqXvvL0u2N/jJjh5 iuVWPFqYCsADhft6MdgARs2gMfvsD1LM8F8r/5x+ZcvwRbNsnkwg4iSVw+GrYr/XyeUleL8VchA +SaSkK3ZcAXtySRgkfp10koJQR9TLVlM= X-Gm-Gg: ASbGncuDhgELxP3JjQAarDyr/zww5hARXtHlVZk21yWxXzK84eJ/sGV1vaxms8yOPQ2 rdJwb4VGvxjF7MUzTgzOFVKttEzscKSke3gMGcGj1M+ULZPpUQ2m8nrjkUQQ/WccT2dektvvShm AVrHYzQY2kfrsB3Vq7kMyt1k4OI/yKVKgUWlxkcfLPhAqeqMNkTV7z+tr9UJIL/5L1EeGRe7tOu w== X-Google-Smtp-Source: AGHT+IFN+jFhs3ZiYwZS+WZ2zoq1RIQk2PhY/l6WHwtJ8M0jP8QrTKzAH8KlAYzY67nP032ZB4LGxDHlFbOEBAeI4Wc= X-Received: by 2002:ad4:5e8d:0:b0:6e2:485d:fddd with SMTP id 6a1803df08f44-6faf6a5edaemr7071266d6.1.1748981936731; Tue, 03 Jun 2025 13:18:56 -0700 (PDT) Precedence: bulk list-help: list-post: List-Id: internals.lists.php.net x-ms-reactions: disallow MIME-Version: 1.0 References: <10D95B6E-094B-4EAE-A18A-AF6B795CB352@rwec.co.uk> <2adbff61-5e11-4d39-ab5c-d7950a4550a6@app.fastmail.com> <79E7FA26-2F5A-470C-B1DF-12CC46A08FE5@rwec.co.uk> <1c6dcd84-9016-48e1-971f-de7749cbdce8@rwec.co.uk> <44F59416-3922-4AF4-881A-C64F2C4E9345@rwec.co.uk> <7F11844A-A98C-4843-BC94-815FBCD2B73F@garsi.de> <7840468C-F60C-4A44-AE40-16F9007EF428@rwec.co.uk> <160E9B1D-9AF6-479B-A628-A73C618D7C1B@garsi.de> <2c5c241c-bd05-4200-b6ee-e94c8ab0db1b@rwec.co.uk> <894DC5D3-3CDD-479F-BAC1-70EE1AE0C5E2@rwec.co.uk> <5eb5b1b4-7cb2-4a2b-afdd-ad3e83ae856d@app.fastmail.com> <57d08124-fb6a-4e0b-8d42-bdb645571b13@rwec.co.uk> In-Reply-To: Date: Tue, 3 Jun 2025 16:18:45 -0400 X-Gm-Features: AX0GCFseBrVe5ZHHI_WW_saQeDeGQIvbOmAnpckSnQx4o7AIB0ebiAVfSHRiwCc Message-ID: Subject: Re: [PHP-DEV] Module or Class Visibility, Season 2 To: Larry Garfield Cc: php internals Content-Type: multipart/alternative; boundary="0000000000000eb9b80636b09712" From: tendoaki@gmail.com (Michael Morris) --0000000000000eb9b80636b09712 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Jun 2, 2025 at 10:40=E2=80=AFPM Larry Garfield wrote: > On Mon, Jun 2, 2025, at 3:28 PM, Rowan Tommins [IMSoP] wrote: > > On 02/06/2025 17:57, Larry Garfield wrote: > >> Well, now you're talking about something with a totally separate > compile step, which is not what Michael seemed to be describing at all. > But it seems like that would be necessary. > > > > > > There's definitely some crossed wires somewhere. I deliberately left > > the mechanics vague in that last message, and certainly didn't mention > > any specific compiler steps. I'm a bit lost which part you think is > > "not what Michael seemed to be describing". > > > > > > > > Picking completely at random, a file in Monolog has these lines in: > > > > namespace Monolog\Handler; > > ... > > use Monolog\Utils; > > ... > > class StreamHandler extends AbstractProcessingHandler { > > ... > > $this->url =3D Utils::canonicalizePath($stream); > > > > > > > > My understanding is that our goal is to allow two slightly different > > copies of that file to be included at the same time. As far as I know, > > there have been two descriptions of how that would work: > > This is what I was getting at. As I understand what Michael's examples > have described, it allows pulling a different version of one or more file= s > into some kind of container/special namespace/thingiewhatsit, at runtime. > At some point that could be a fair assessment of what I was saying. I'm coming around to Rowain's container view though, enough to start thinking of this as container modules. I don't want to get in the weeds of how the files for a container module get set up by whatever package manager is chosen as that's a massive problem to solve in its own right. For now I would like to focus on this idea of having a container that can do whatever it needs to do without affecting the code that started it in any way. Avoiding the enormous code/file duplication that will result from this is a separate, later problem and admittedly might not be solvable. But having a container mechanism, even if it isn't optimized, would be healthier than having plugins that carry their own Stauss monkey-typed copies of the libraries they need even if those are several minor versions behind (which should be compatible if the author obeys semantic versioning). --0000000000000eb9b80636b09712 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


On Mon, Jun 2, = 2025 at 10:40=E2=80=AFPM Larry Garfield <larry@garfieldtech.com> wrote:
On Mon, Jun 2, 2025, at 3:28 PM, Rowan Tom= mins [IMSoP] wrote:
> On 02/06/2025 17:57, Larry Garfield wrote:
>> Well, now you're talking about something with a totally separa= te compile step, which is not what Michael seemed to be describing at all.= =C2=A0 But it seems like that would be necessary.=C2=A0
>
>
> There's definitely some crossed wires somewhere. I deliberately le= ft
> the mechanics vague in that last message, and certainly didn't men= tion
> any specific compiler steps. I'm a bit lost which part you think i= s
> "not what Michael seemed to be describing".
>
>
>
> Picking completely at random, a file in Monolog has these lines in: >
> namespace Monolog\Handler;
> ...
> use Monolog\Utils;
> ...
> class StreamHandler extends AbstractProcessingHandler {
> ...
> $this->url =3D Utils::canonicalizePath($stream);
>
>
>
> My understanding is that our goal is to allow two slightly different <= br> > copies of that file to be included at the same time. As far as I know,=
> there have been two descriptions of how that would work:

This is what I was getting at.=C2=A0 As I understand what Michael's exa= mples have described, it allows pulling a different version of one or more = files into some kind of container/special namespace/thingiewhatsit, at runt= ime.

At some point that could be a fair= assessment of what I was saying. I'm coming around to Rowain's con= tainer view though, enough to start thinking of this as container modules.= =C2=A0 I don't want to get in the weeds of how the files for a containe= r module get set up by whatever package manager is chosen as that's a m= assive problem to solve in its own right.=C2=A0 For now I would like to foc= us on this idea of having a container that can do whatever it needs to do w= ithout affecting the code that started it in any way. Avoiding the enormous= code/file duplication that will result from this is a separate, later prob= lem and admittedly might not be solvable. But having a container mechanism,= even if it isn't optimized, would be healthier than having plugins tha= t carry their own Stauss monkey-typed copies of the libraries they need eve= n if those are several minor versions behind (which should be compatible if= the author obeys semantic versioning).

=C2=A0
--0000000000000eb9b80636b09712--