Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:123326 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 9AC631A009C for ; Thu, 16 May 2024 22:51:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1715899945; bh=d6LWE2gwXBrBqHu6IAV3AKp/OpRv2pCwT3e3Xfzvoho=; h=References:In-Reply-To:From:Date:Subject:To:From; b=bfiXraNMqiMDL6KayQV0lOLaTaLO1B8zBLGRwJfDei2Ur/OuIFv2k6O4OGX45RKKA 8gKZxt4yqo6B4IN+KIwyjJ1GOAVefOFJVNeRIWqa56mrkVKdHh/CJSHCz4lrVG1NFF suy+7FTcG55nCb47EtXEvK8v3QFZMRT//Pq7I5oVsvJi3ESz0yg2bsBE9hP63eljv6 bPMOTOJIymWPgn253R/4GLvf6xS37goi6kyuZtktggyKgG/aHK0Y4SjBabGZvbO6Bh PTbGdgCDudemaewUxnb9xTlknh5KScwjgfyYGvld108Ot/ijT1HTEXeKAhVTMieKv5 nc6ZZsZcfhdAg== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 2DB43180004 for ; Thu, 16 May 2024 22:52:24 +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, 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-qv1-f49.google.com (mail-qv1-f49.google.com [209.85.219.49]) (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 ; Thu, 16 May 2024 22:52:23 +0000 (UTC) Received: by mail-qv1-f49.google.com with SMTP id 6a1803df08f44-69b6d36b71cso244036d6.3 for ; Thu, 16 May 2024 15:51:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1715899890; x=1716504690; darn=lists.php.net; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=d6LWE2gwXBrBqHu6IAV3AKp/OpRv2pCwT3e3Xfzvoho=; b=J8efTdgiCTq2n2aI19NvU0k3Ng56mR5pEDdsHxT7V6EolHv+Np00dW20UPkDXdmmPM nhjSJ8gZ06AZtSu4+sQbLGVXmOKI6CRHkfJMHOlc51IX9tvG1Hylb8iXYlJUGnBeKNMR tGX8zYsYdjMu4m3qcYt93l/rmDCmpn0HgsohjjM3R9LTbdobVjIk8aN4mT0x653a3ZMh TilW3EdyfpzyiYRXOh5vWbOtmK7Sb/aMq+dU0FB04fV7BFNlHYaFTzUiJ09mnH4rX7QM Mmagfdq2SCGhwZ/6LlzocDVXk8piA5a+u8DpeIfNWSkmU22kJcj6/V11Pwgo6kPEV2jd /ROQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715899890; x=1716504690; h=content-transfer-encoding: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=d6LWE2gwXBrBqHu6IAV3AKp/OpRv2pCwT3e3Xfzvoho=; b=Y+PgAZpzZ1fFpWdtBnZWdjpqNTG6Uw77zGXFxrgd0kq5+eN4GEmzjijIazc+Xf0lW4 K5PjfjYv/JeaoYMGxX6lMEbcVdLJXOVbXMrNAMsfsxVIlUkFJivAqubCjZGklpp2PgcA zjyva5vX6H9FtiUaLk8z20Atv6FbyJwUWuu6tpdEAWnTx9QXXj2FLf3MNDBAaISVYXEz 7iEUHy0udXzO7bV1vJgZjNd4ES5epf4+Lq+ud2yRF7hv4abfJOZFBVOZLWaZefdUIjNT DpUuA4LEXLW75NNzXJabRJrBOEsIGFPZYSqeLSCKqzmLAV9mcUdBeb5NS7z8QudeGzZ7 gMYg== X-Gm-Message-State: AOJu0YzCRmM8W2OzZi6yZvl6QnpUFntbDpQZKZGSHsp+aKIZuyJtV6Xv mWw97C8hywtqpkzSOZwYc1maPcAyxSruvNci20lcChM1W4I+X8R4KyY7nIZnLkVyR3DkAfXmNww MGZWCY4NDVjnHGFh8W/9PKXyZk2tIaEW2fLzHqQ== X-Google-Smtp-Source: AGHT+IEwkXvg3igodpQulGR5VAn/eMrrZP++qHVMJir9UTgEr0dd+SbAQ5zM7nPG+RBW9cATOoW1cTeBVBhtbZXpgQI= X-Received: by 2002:a05:6214:5b87:b0:6a0:6649:c7f3 with SMTP id 6a1803df08f44-6a168223bedmr289059556d6.41.1715899889515; Thu, 16 May 2024 15:51:29 -0700 (PDT) Precedence: bulk list-help: list-post: List-Id: internals.lists.php.net MIME-Version: 1.0 References: <3A6.1T4AB.9eXWvq4hof.1cHcqE@seznam.cz> In-Reply-To: <3A6.1T4AB.9eXWvq4hof.1cHcqE@seznam.cz> Date: Fri, 17 May 2024 00:51:18 +0200 Message-ID: Subject: Re: [PHP-DEV] [RFC] [Vote] Type Guards for Classes To: PHP internals Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable From: tovilo.ilija@gmail.com (Ilija Tovilo) Hi Patrik On Thu, May 16, 2024 at 10:31=E2=80=AFPM Patrik V=C3=A1clavek wrote: > > Introduce a new type guard syntax for classes: > > ```php > (Foo) $variable; > ``` > > This syntax will internally perform the following operations: > > 1. Check if `$variable` is an instance of `Foo`. > 2. If the check fails, throw a `TypeError` with a message indicating the = expected and actual types. Note that this feature is covered under the pattern matching RFC with the "Throwing alternative" extension. https://wiki.php.net/rfc/pattern-matching#throwing_alternative In addition to just class types, it would support all other patterns, including scalar types, union types, array shapes, etc. Ilija