Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:125930 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 92A6F1A00BD for ; Sat, 9 Nov 2024 08:40:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1731141754; bh=HI9+oKvRwzP6EwZAfJMCYLs/93ia6R9Ub+6W2rUajnM=; h=From:To:Subject:Date:From; b=nw4G0XcdO6UX9F9DP/3nNYL6YmHMjj5O1X1sLaXWBtVqsLA89DrqvslIORgnx/Lou ZdoucUTCCuAvEZ+zj7PySFPAElopBwPf+LPPfAHpQS4gCsAdee8ZlufINTJznEHYMG H0Jyy/kjWNUODTt9wCNTsL1400Y59PW0usyW0RgQY+QQz9fZBY1BYbjamULpHjzlLd yoseGFWHjCnMtDHwOCGvVW1mP/vArAp9SDi539IWECXoSqLaYqisgw9F55+537BTo4 VXRocbnJS5NMgsNbWWt8n9eYo1x5CR9HvsYMJ++fENbmujzYPR7mJQrsT2LynhsQLH OB2dMy8ES7dgQ== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 182B818004F for ; Sat, 9 Nov 2024 08:42:34 +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=ARC_SIGNED,ARC_VALID,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_PASS,SPF_PASS autolearn=no autolearn_force=no version=4.0.0 X-Spam-Virus: No X-Envelope-From: Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05olkn2091.outbound.protection.outlook.com [40.92.91.91]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (secp384r1) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Sat, 9 Nov 2024 08:42:33 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XsIsfiX3sPVdq3sJ0Pgv9wlvc+4KgdpgF7wWMlByHgJIJE5hWGXSnByY49p7wUA5ssAmT8FHYBX+wJGIZ+HcT03W7HK5FECEZ3QociuHhcYWhJW//eNstnUTaIek6aCzXKdBeuUQDC8RC2znYlRCSXeOY18XCQDtDTkwESvZpMwXq0oi/YBBw6T/nL/tMKqiCcZSEM3ZwbXGWuUgZrRG0j063Gy+LI23RsZDYJ24Ti2TRJz/WAcj7t4h9pbzmopCy4PTUYHuyNNKN6MZEK5r+7KS3t0403AhDNWEDhclgI4uRTVY4AjrndBvYOtIj7dk1tBa4epFC67w0B4YOJ/Fog== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=WMHzBiuuf50hGGPiXs95ycYzpIal+rlnSZS79rcEtrw=; b=eAi60KBjaVDKUueUAH3tXJa1OrDglJDOHzCOPK6yh2uwN/cvj7ayhxqAgPlKKXbmkutSr4dLV3YBuP+hS84IslGX29zFNd0iNAAkrwWkmztqfoNNEz/n8fg7dHYwHxEILmtlRDxOVjRjrFdpnNilVuiFoM/TIOTGfTK+3IaxvKPbKAWnkqKBpsetRMBIhkI+0lKm9jj5jgLW7srWFOlxnKyhUJv3ZJ9EZjqXLa1e+H0AdsYcD0fa3ChzC1AiBXgCrVKu9qiH0XtFUpfAr3+DrsmpT8KZuPr2iIyoQXQCyY8OuxE4BkuNCEwl+TtjqdtjOwQiNpJ9SwvHY0nD8S0YEQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WMHzBiuuf50hGGPiXs95ycYzpIal+rlnSZS79rcEtrw=; b=swn05e4M2hgDSMR3SvBqU+8CKn44QJaHIXBAusF+D9JO7l1N53bb4OwxflahCBrfcABzrUPXN81X7UysjMcvE/UTT3EXEHF1v2wkJK3/59ggj8zqnFJOnX6ukQjCghX4z0Fo1Si1fJuwkXcoofgYIKmAxp4KXCPStJpCPwLdxVxKTb/y+UxU4MbN6MLaJ9nbwZdzjPSOEFM7jfNos1NemktebwULjmY3eNRUG2Sf2WA+ga1UC/KCvPyLbGmPnN3Q3MFptOwqREZUaiX7WSGl+PsEK7ola/D1WcAVhkdQ9vb1iGERGJw0j9NvEirPlkZ9mFIZIGkmN7mSTJIlw+6/iA== Received: from AS4P192MB1622.EURP192.PROD.OUTLOOK.COM (2603:10a6:20b:4b8::16) by PR3P192MB0713.EURP192.PROD.OUTLOOK.COM (2603:10a6:102:46::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8137.20; Sat, 9 Nov 2024 08:39:57 +0000 Received: from AS4P192MB1622.EURP192.PROD.OUTLOOK.COM ([fe80::e1b:76a0:d397:2609]) by AS4P192MB1622.EURP192.PROD.OUTLOOK.COM ([fe80::e1b:76a0:d397:2609%7]) with mapi id 15.20.8137.019; Sat, 9 Nov 2024 08:39:57 +0000 To: "internals@lists.php.net" Subject: [PHP-DEV] First-class types RFC Thread-Topic: First-class types RFC Thread-Index: AQHbMoKJRcSytY5nWkOXYssv0bZhJQ== Date: Sat, 9 Nov 2024 08:39:57 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AS4P192MB1622:EE_|PR3P192MB0713:EE_ x-ms-office365-filtering-correlation-id: 60146375-1d65-4b59-9baa-08dd009a1788 x-microsoft-antispam: BCL:0;ARA:14566002|8062599003|461199028|19110799003|8060799006|15030799003|7092599003|15080799006|440099028|3412199025|102099032; x-microsoft-antispam-message-info: =?Windows-1252?Q?8lFxCabc+GJqMYM/xdDAldtU49dzTaFdL2JkRRPU2egMJ1Caz4MsCBEK?= =?Windows-1252?Q?gf9a0p+3ER6iUld6dIhx8YXzRiN1YlDlRaaJAdlURexMB654SArg7HDP?= =?Windows-1252?Q?Nm+wqR8Gwu7DOX5qC/gYlB8tcVUE6FK+RZBOx3SIZGceDreMmXjs8vVo?= =?Windows-1252?Q?R4ljRtgnzO85VLrV1vC/x9T7biyGyK3DqR/CRKGC26f94+NBQlD0O7Dg?= =?Windows-1252?Q?PEGMehy3nX58sDpuA+nM/VfM1DxmiFpb01BoMXhycKIbPyZVxazsjMyM?= =?Windows-1252?Q?f/GaGMexONR8w1dsW8lsmi19pVfT1Q2O6Kw3FpKt6larib7bJ0GWCisR?= =?Windows-1252?Q?2Ejez5rcCK58/YohzwqGSqhio4zgZ3dly2zanpzoMCJNDU07tAmN6laD?= =?Windows-1252?Q?Gxqj0zteIQS/3aOhqEE9A/RwFeL7kLL8uO51Xp3H/Sat7uuglTQCzvbY?= =?Windows-1252?Q?Hgt188z7yrT6yBj2epsU4egaoN9qUxs9p7S2zQ6gXFJK12hmai1iM7+w?= =?Windows-1252?Q?ZHwO4HvD4HF2dltMS+OPYIiGgk25aXcxoD/bokk8vfI6yLqdj0Ha/zY0?= =?Windows-1252?Q?x2iblNQamnvxri2MFKAs/ZT3knKJo9uVKdmqAdWOMw0sye9n1GjDKFJ4?= =?Windows-1252?Q?1CN/4SJAdfObEydYI8FIyXLAxocD9DGJeR2Omb1zvoJrr7yem/VQEGrF?= =?Windows-1252?Q?OTZ8nPOKy8UY6e6TcDptYg6ewGGw71zZablWk5yjq22j1fpHV5DpwnYW?= =?Windows-1252?Q?3H5W75CL6vuhZP97eevn5Cip8bKbk/D0AFJhGHZwNFwF5SjGL1w4hFbt?= =?Windows-1252?Q?5HoX7cW64R2pUejzx2+9cmVwR3+kKdkWOtHJvZa28GoxnnLGc2hYAFI9?= =?Windows-1252?Q?I7CgOPrEjs6Y7+Gq4mvZU4A3VqNickB3aUIMnefZcC5b+krA2cszUVIW?= =?Windows-1252?Q?3tRVPzUqksfdEjuBbmJTAN7qZkQmrvHcK96Uesbm7XS63FMrByqxzfQT?= =?Windows-1252?Q?47GLDkGSW4/8xrQCQzsE/li/zPbR00QdjX1vLdiyWEBt9VFrK0QBg/03?= =?Windows-1252?Q?giLXFIDHCqV3dik4q0jfOMYqxG6TJWrIcFmlc6K5VrOHCw/UJxZ+2qdH?= =?Windows-1252?Q?ID50DAvJt3ceDME4AfOVGGjp?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?Windows-1252?Q?DVQ21wQDN72c30FV5vL+r7hwHZElKweT3epdPeWziJeNNjuaXcRjgObB?= =?Windows-1252?Q?PaOhgpoT0VE9t3L8hbcYkpH3u1b/PAMLvKhB/WV8irodPMh+GX9JF54f?= =?Windows-1252?Q?Tqk2sj6PxI8xVOJGbiJU+9HvvIix3f+K1JHsjz9C90smM9bj574lCPqo?= =?Windows-1252?Q?LwPCJEZhvsG2C2/p6XRsx/hE2z5G/cEw8NexqGWBzVl+tyvVyh1/564p?= =?Windows-1252?Q?u6d+gdhF1OR68LbxAoU62AlKyTRPpnJ5301wN09UAewToq6ppSau0sTr?= =?Windows-1252?Q?ct+QFLrMHfXqjqKja3GqMdz5Tls98sazTcPmRB+CtBIeNOLCU7C4AXIv?= =?Windows-1252?Q?2jK4bg05gUNgpz8fBEppoFQtYg7ekQRnWUT+iKoIO024vOC9heCx4m2w?= =?Windows-1252?Q?kdwxxmZJLdDsf7rHT+/7M6Xl9S7rlsWiQjfCGdlEXpiZU5mQAfivJpW3?= =?Windows-1252?Q?FvgJ+2asaoZvNHl6dv/KZ3mZOb+A6OA1FUBN261CoE9GR2TOWseoEgXa?= =?Windows-1252?Q?y/1sdPfKc2Z8NuskV116AjphbfdMq1llRcKpPnwV/x4OyojLnOXafZ8j?= =?Windows-1252?Q?UbPro61L80NBuUtU+mwebn68IV/NZbjDMSJze6BukmBeWWzTj9MYv+KL?= =?Windows-1252?Q?61uNq3Mn4DU64cv3bc/GNofA/dd9ofVCbURNoQ2meL++fr5iU6NQ0oWY?= =?Windows-1252?Q?NjvFIiJby/wExvlIImMBlepgQpe0xhhgcvs2Nk2ueUQty5pqhDzT9gKi?= =?Windows-1252?Q?VAe0LYpJGpxe2SSDxfD+YoWMVfZH3XaAS0chgLm3PgZe18Ln/rYTv1My?= =?Windows-1252?Q?H9OnoPECxEYta1UA6o4OKd6MvuarGABb5c8kkCWsHYGZqUl9elDOjYcN?= =?Windows-1252?Q?7gbPFBu4prfPIXJYENmUue/lvMheNrAZGaC5ZveFzItxMUAJxh8tUZ61?= =?Windows-1252?Q?sV1T0bYob8W/godhlHtKVXZS3SGug9DZHlttgGQcmZDr7O8hPoQ649Vl?= =?Windows-1252?Q?FcSYgWmC6HqtMEYfKmnpOSmwM+yWc8vc0BoBqesD4BRYuMq6xeePTDmn?= =?Windows-1252?Q?PJwDX+wTV8SmNcb/zWNMQrcQsTxjcoeprmwe3/WFgQA3bCrGp2PEwwPq?= =?Windows-1252?Q?hFw2kN6Y8FqcFQ0CF8XzkYpdbp9H9Agq60vbgqjvUB+ULbmro03tHNPS?= =?Windows-1252?Q?6018WSqBhapdopwyZoWrKmE7p8bDsZ3WMfSKxmTD8WJ9PrTVOrTlwz7h?= =?Windows-1252?Q?m+Zdr1FGJb4C5uKA53yXLEOVKdjEEZKSQpP/y3qbDyvNL+B2D1iK7zcg?= =?Windows-1252?Q?z7kNNCHFTL7RB0QEg0apzlizeRc=3D?= Content-Type: multipart/alternative; boundary="_000_AS4P192MB162200EBAB671895CA643F3F985E2AS4P192MB1622EURP_" Precedence: bulk list-help: list-post: List-Id: internals.lists.php.net x-ms-reactions: disallow MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AS4P192MB1622.EURP192.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 60146375-1d65-4b59-9baa-08dd009a1788 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Nov 2024 08:39:57.5853 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3P192MB0713 From: kecskes.adam@outlook.com (Adam Kecskes) --_000_AS4P192MB162200EBAB671895CA643F3F985E2AS4P192MB1622EURP_ Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable Hello internals, I propose adding first-class types to PHP, as this feature could greatly en= hance the language, especially given PHP's unique runtime type-checking sys= tem. Many libraries currently rely on class strings as function parameters,= which could be made significantly safer with native types rather than stri= ngs. This addition would not only streamline existing code but also create = a foundation for future language extensions. For instance, generic classes = could be implemented as syntactic sugar, which would translate into a class= property holding the type parameter(s) for each instance. A minimal viable version could allow defining types as expressions, introdu= ce a new 'type' type, and expand is_a to accept those expressions like: is_a($object, \ClassOne | \ClassTwo); An example interface might look like: interface ContainerInterface { public function get(type $type); } I=92d appreciate your feedback on this idea before proceeding with an RFC o= r draft PR. Please let me know your thoughts! Best Regards, Adam Kecskes --_000_AS4P192MB162200EBAB671895CA643F3F985E2AS4P192MB1622EURP_ Content-Type: text/html; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable
Hello internals,

I propose adding first-class types to PHP, as this feature could greatly en= hance the language, especially given PHP's unique runtime type-checking sys= tem. Many libraries currently rely on class strings as function parameters,= which could be made significantly safer with native types rather than strings. This addition would not only = streamline existing code but also create a foundation for future language e= xtensions. For instance, generic classes could be implemented as syntactic = sugar, which would translate into a class property holding the type parameter(s) for each instance.

A minimal viable version could allow defining types as expressions, introdu= ce a new 'type' type, and expand is_a to accept those expressions like:

is_a($object, \ClassOne | \ClassTwo);

An example interface might look like:

interface ContainerInterface
{
    public function get(type $type);
}

I=92d appreciate your feedback on this idea before proceeding with an RFC o= r draft PR. Please let me know your thoughts!

Best Regards,
Adam Kecskes
--_000_AS4P192MB162200EBAB671895CA643F3F985E2AS4P192MB1622EURP_--