Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:124121 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 9A0D71A009C for ; Mon, 1 Jul 2024 01:52:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1719798849; bh=8TLiHAy2Ux39EolVIECbRt6xHwjkPqYnAtUJ0ApjQto=; h=From:Subject:Date:In-Reply-To:Cc:To:References:From; b=IUL6CWsl+Qq4Fjssu/Z3mhjF2r3fp66MVVdMsWe3CGeQTATj6RUMbjXq7s+K1uXdf vPLVbBrQ9bKihXoNLVyUhh1JyE85U8ncFtZ8ZhpEFhr3CQBdUIOa7k4WXcPFvPLHDE qVMo9EL+Wi/8CH3TLCQfBJFVRQJATCZdgFIFlOQjdJkGpF7RehapqiIBOpcXoPSy57 Nosr7uDpPgvXmEO0DFy4F9ohsiY2Y54ywV49WQBqgy0TDHe3lyoIeqTOtTqj6dsKkQ kfz1OQUuHsIv4zG2OHp7jFTWIQFZ0YvLDCRBe9dhnjyRNzmM0JNNGzVmh6505qbcvQ vfI9nyNwZX3Tg== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 7087E18054B for ; Mon, 1 Jul 2024 01:54:08 +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_MISSING,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-io1-f51.google.com (mail-io1-f51.google.com [209.85.166.51]) (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 ; Mon, 1 Jul 2024 01:54:07 +0000 (UTC) Received: by mail-io1-f51.google.com with SMTP id ca18e2360f4ac-7f3c5af0a04so131717939f.0 for ; Sun, 30 Jun 2024 18:52:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=miles.systems; s=google; t=1719798766; x=1720403566; darn=lists.php.net; h=references:to:cc:in-reply-to:date:subject:mime-version:message-id :from:from:to:cc:subject:date:message-id:reply-to; bh=vhHoa7qW5K+Cv4eKwEllEyu5m8mSDGy8NumT4e8ql34=; b=PFiyr/NKUM962Cbi2zBUfqr1XZZoyxVsjblFnYhfpzSAJK0cT8LDrwPLilJ5NDPQqk RB1qtJnj5WsVZC8dfIg8QwzA26UqH7af3x+KSiKmLxG50j+p3OglYcB67vdG5UYvJsED I6tsGFgmRk6Bwj4QDe1B3KM8ApAPhDs3ea1DdbKeHyx1GNOX+lUfIUuO9ZyRVeH5bVG6 0/f0gTi2jYPN0UFX5KUPXWg5abR2CrwbvkRXgGr/HHhDxcoHPDd5SZO0ouEGCpDd12T4 epD0kdpkcVveJXMj5PmKNmeXTd1n+I0DG9Ont8qaUl3asHE11DKw1CHLInfhIhafY6nX nsRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719798766; x=1720403566; h=references:to:cc:in-reply-to:date:subject:mime-version:message-id :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=vhHoa7qW5K+Cv4eKwEllEyu5m8mSDGy8NumT4e8ql34=; b=lYoS2ou5F8rhUCzMc1Zqc/MQCnPZvA3qwbP04Hs67Stt46LUNeitXEBfY3qw64fM+1 prnpKOxP7cBtfL/sCo67suagbWKSqUZQziIXN07Jxr9j1X7GFSZPDB1PzRRZb/JEkJMv iH05ObHHQPS7WgUVlyoi4uMfQxUxI+ihBzd6ig933mRZvZKUj+qjB0th3Z4iwKB8iZ/e XzZt3DQGey0edYCER3pYPpCrkQgemGx3nKJyKKv32Xsq0tXt9YMz7uQFAcU1lVqxXMer shhftpdmjr3tRS3CGlY+xuuExOYIrXS2xEPbbsW6MCgaJJrkrSlwvpxggKUY+sUfu0Z+ HmtQ== X-Gm-Message-State: AOJu0YylZS3Q425Ymkfy8ulhazfsMHOGB6bFppkkGNIaIBoqkKqZqGx4 nhqtf7t0z4ovffnrrZastuwgMz4KD8usAAKS2lUUl2/TfRRnq+rZQEgWPSBmXA3SH4U28TQtxCD 8+tXP7xOTOaFDexfUZ6KzgSCRyyIlQMzkSuZfb+oOuIwlleKI/M1wTMrc3yGs8xnbEtCQxEtWrX aOQYz/2MIciUQdIWc3BXz8ep4Yqq4KXCVmmXlumfkw X-Google-Smtp-Source: AGHT+IHJKhzRkniqZwjjtxX59sfRNDizT3ej5GLiTvK4SB2DkpvYvCDdQv5AkhqfnEK02VNHYGn2sA== X-Received: by 2002:a05:6602:4f:b0:7f6:2c61:a419 with SMTP id ca18e2360f4ac-7f62ee74934mr457347839f.13.1719798765634; Sun, 30 Jun 2024 18:52:45 -0700 (PDT) Received: from smtpclient.apple ([2601:283:4600:6770:bc64:9d6d:433:900e]) by smtp.gmail.com with ESMTPSA id 8926c6da1cb9f-4bb73f96ec4sm1935136173.101.2024.06.30.18.52.44 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 30 Jun 2024 18:52:45 -0700 (PDT) Message-ID: Content-Type: multipart/alternative; boundary="Apple-Mail=_36779CA1-8F8E-4AA6-AD53-7ECE3B3B448A" Precedence: bulk list-help: list-post: List-Id: internals.lists.php.net Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3774.600.62\)) Subject: Re: [PHP-DEV] [Initial Feedback] Typed Arrays Date: Sun, 30 Jun 2024 19:52:33 -0600 In-Reply-To: Cc: =?utf-8?Q?Micha=C5=82_Marcin_Brzuchalski?= , larry@garfieldtech.com To: php internals References: <4ECBB519-B129-426F-93AE-33738A1ABA06@miles.systems> X-Mailer: Apple Mail (2.3774.600.62) From: richard@miles.systems (Richard Miles) --Apple-Mail=_36779CA1-8F8E-4AA6-AD53-7ECE3B3B448A Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > There even was an RFC in voting which Joe implemented and it addresses = nearly what is discussed it this thread https://wiki.php.net/rfc/arrayof The link above has broken page links to the mailing list. I=E2=80=99ve = found the externals.io history and have given it = a read: https://externals.io/message/108175=EF=BF=BC Typed array properties V2 externals.io https://externals.io/message/71143#71191=EF=BF=BC Introducing "Array Of" RFC externals.io It seems like everyone always gets really hung up on generics! That or = how to syntactically implement this. Again, I think this issues is not adding generics, but again = understanding what we=E2=80=99d pass to Array. How do we model complex arrays: interface iArrayA ['a' =3D> string ] interface iArrayB extends iArrayA ['b' =3D> string, 'c' =3D> ?string, = =E2=80=98d=E2=80=99 =3D> SomeClass, =E2=80=98e=E2=80=99=3D> iArrayA, = =E2=80=98f=E2=80=99 =3D> mixed ] class D { public ?iArrayB $exampleA; // Array public ?iArrayB[] $exampleB; // Array[] } Since we do have SplFixedArray which is essentially SplFixedArray, = which is a sequence, already built in I=E2=80=99m=20 thinking we can focus on SplObjectStorage which could easily be made = SplObjectStorage, for example. I=E2=80=99m not saying custom data types wouldn=E2=80=99t be a good = thing=E2=80=A6 But maybe we can co-exist class D { public ?Dict $exampleA;=09 } Sorry for continuously enterchanging implements with extends, it = absolutely supposed to be extends! If someone has an opinions/considerations on wether to extend the = current array implemention with metadata or creating a=20 dedicated structure via a new class `SplTypeDefinedArray` that would be = helpful. The posed implementation reads as a=20 static cast, but it doesnt have to be implemented as such.=20 Best,=20 Richard Miles --Apple-Mail=_36779CA1-8F8E-4AA6-AD53-7ECE3B3B448A Content-Type: multipart/related; type="text/html"; boundary="Apple-Mail=_C51D2F73-5985-40AD-8A4C-0B4E1F93F72F" --Apple-Mail=_C51D2F73-5985-40AD-8A4C-0B4E1F93F72F Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8

There even was an RFC in voting which Joe = implemented and it addresses nearly what is discussed it this = thread https://wiki.php.net/rfc/arrayof=

The link above has broken page links to the = mailing list. I=E2=80=99ve found the externals.io history and have = given it a read:


It seems like everyone always gets really hung up on generics! = That or how to syntactically implement this.
Again, I think this = issues is not adding generics, but again understanding what we=E2=80=99d = pass to Array<T>.
How do we model complex = arrays:

interface iArrayA ['a' =3D> string = ]
interface iArrayB extends iArrayA ['b' =3D> string, 'c' =3D> = ?string, =E2=80=98d=E2=80=99 =3D>  SomeClass, =E2=80=98e=E2=80=99=3D= >  iArrayA, =E2=80=98f=E2=80=99 =3D> mixed ]

class D {
public = ?iArrayB $exampleA; // Array<iArrayA>
public ?iArrayB[] $exampleB; = // Array<iArrayA>[]
}


Sin= ce we do have SplFixedArray which is = essentially SplFixedArray<int>, which is a = sequence, already built in I=E2=80=99m 
thinking we = can focus on SplObjectStorage which could easily be = made SplObjectStorage<string>, for = example.
I=E2=80=99m not saying custom data types = wouldn=E2=80=99t be a good thing=E2=80=A6 But maybe we can = co-exist

class D {
public = ?Dict<iArrayB> $exampleA; =
}


S= orry for continuously enterchanging implements with extends, = it absolutely supposed to = be extends!


If someone has = an opinions/considerations on wether to extend the current = array implemention with metadata or creating = a 
dedicated structure via a new class = `SplTypeDefinedArray` that would be helpful. The posed = implementation reads as a 
static = cast, but it doesnt have to be implemented as = such. 

Best, 
Richard = Miles





= --Apple-Mail=_C51D2F73-5985-40AD-8A4C-0B4E1F93F72F Content-Transfer-Encoding: base64 Content-Disposition: inline; filename=apple-touch-icon.png Content-Type: image/png; x-unix-mode=0666; name="apple-touch-icon.png" Content-Id: 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 LgDqFxF08kI1lQAAAABJRU5ErkJggg== --Apple-Mail=_C51D2F73-5985-40AD-8A4C-0B4E1F93F72F Content-Transfer-Encoding: base64 Content-Disposition: inline; filename=apple-touch-icon.png Content-Type: image/png; x-unix-mode=0666; name="apple-touch-icon.png" Content-Id: <0E816F02-42FE-45A4-8075-BBF2508F34A1> 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 LgDqFxF08kI1lQAAAABJRU5ErkJggg== --Apple-Mail=_C51D2F73-5985-40AD-8A4C-0B4E1F93F72F-- --Apple-Mail=_36779CA1-8F8E-4AA6-AD53-7ECE3B3B448A--