Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:127787 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 EFBD31A00BC for ; Sun, 29 Jun 2025 23:52:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1751241039; bh=GeGdkNcWEAtMSHZc/hG4iRrZDuWGkbp3z2FJzT+3N54=; h=From:Subject:Date:References:To:In-Reply-To:From; b=mfGeU849AYf110hhMJW8/DKFKNyThcyFX21O/XkJWyVDdU6Bb3dJqgQQQN2VkTNsP 9g94adx/yTzaF6Dds7wLDEM0n5N+8wzvzCIGDljdsJZfKR/cDcU8TmVhM53juFZrFQ x4ATd/rrEVhxcKIy9Sb+2RHqnlv8k6ksD2zM6VuFMU3xWf/dp+P/QpBZEXtvBZwaXK WUV8bZqiH26CN/gQoDIYAa1BqRCqinZR784DQDeAEq01nUwwUsWZcXTfTmna7dLibV rRCBc+RCUTE0FkeRjupJQ8ssLYYnukTdsSgizTwXZmEYtWmIQMjl6x4HUkDBUzwHuT UA5XkrSRizIbQ== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 2F21318003F for ; Sun, 29 Jun 2025 23:50:39 +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=3.6 required=5.0 tests=BAYES_40,DMARC_NONE, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2, RCVD_IN_PSBL,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-f48.google.com (mail-qv1-f48.google.com [209.85.219.48]) (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 ; Sun, 29 Jun 2025 23:50:38 +0000 (UTC) Received: by mail-qv1-f48.google.com with SMTP id 6a1803df08f44-700c7e4c048so19903446d6.3 for ; Sun, 29 Jun 2025 16:52:32 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751241152; x=1751845952; h=message-id:in-reply-to:to:references:date:subject:mime-version:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=9GBEjGnxOLQd/coxpO1/HEvarArjSmippdDm8jjwK6E=; b=RhSSxKBYTH0dz/Vt0QwtvUO1L6kl0ZjqTN4/E8pRI4A7hefVdjcmGr+2HmiJi2cdeX 1nuz1FsGdi5KxDLGczFNi7nBcGkTmLWFv5UAJmlBQ1R8iIaZlJEW72sWZZFmgOa4paqh NldsALIK940t+TIwkvOugOTEt+QCkUClzsOzossM9+Evie5RWpiFJjT0mh+8i1mZyKKe LYEf9y+20zuG9FH+PdKFdeAfBc0wrQYm3QJSlQgM1GX06eDFlhPY5998GQAGSLPK7605 15IdB4zgZgYCdmwmV8p5cYwcuMb09BFXQANyw1znUC7Bp9I9X2qVbuNSN5EwyKjf0Kc6 l6Xg== X-Gm-Message-State: AOJu0YxBx3leBFEMMeC/sWt3r5svggXtVzsRvycv+uJwGhgCWoIUA9/F PBnta3b9PFZPlsuiHxtMLFSjXxblzVeQyW1sB9BVAhVSIU7HKWCfl9itSCjrVFX1mEOfE+6Bg+p BHLVUXnKwBDA= X-Gm-Gg: ASbGncu/7hk8n3at3Az+wHUqWRL7yyzoSluisMvQB/7GkaIpgNajJlubMXLdhw9jjxj MCb6YZxLCrd2mREysUWTsKUONNliVOALfCZaYv5mZJPNWUdt6AY1fS0Fs03teq7BslaImabc5uc 1gTv9Rm1cGlzaJqRW7diZRhDUAN+Z9nStB+zExhJxz6sjwo4QvFf+k12+q172IGNyfn5j15dWeQ RzLDzIxmBqxaPX2NzrlCqbHgCD9RSHSsvGrztnVkO5TCMVw+EH2eC+2EdvWWC7Nh5ckC43V2BmJ 3RFFcrAW5qiw14AatPkDlOG4ticXdITAFjMBlRMnEfKmLsrja1n3OpEJkaEb9MZT2wLRPBo= X-Google-Smtp-Source: AGHT+IGt2Xe/Np9vGY7nARL3RIoFzEOKo7QsqtUMJ0VHeIUjO5FGszLPjvY2Aci8BpWoXdDM15j0RQ== X-Received: by 2002:a05:6214:1d21:b0:6fd:5cf4:cb93 with SMTP id 6a1803df08f44-6ffed7a4285mr180999206d6.9.1751241151740; Sun, 29 Jun 2025 16:52:31 -0700 (PDT) Received: from smtpclient.apple ([37.19.211.120]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6fd773244d2sm57991616d6.122.2025.06.29.16.52.30 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 29 Jun 2025 16:52:31 -0700 (PDT) Content-Type: multipart/signed; boundary="Apple-Mail=_BAC74DB4-98A9-409C-A255-C627B24F1AB2"; protocol="application/pgp-signature"; micalg=pgp-sha256 Precedence: bulk list-help: list-post: List-Id: internals.lists.php.net x-ms-reactions: disallow Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.600.51.1.1\)) Subject: =?utf-8?Q?Re=3A_=5BPHP-DEV=5D_Request_for_RFC_Karma_=E2=80=93_kha?= =?utf-8?Q?ledalamxyz?= Date: Sun, 29 Jun 2025 18:52:18 -0500 References: <9f135472-9b34-47c4-b549-e5c7a17a775f@nunninger.info> To: internals@lists.php.net In-Reply-To: <9f135472-9b34-47c4-b549-e5c7a17a775f@nunninger.info> Message-ID: <7506F251-4F72-4A04-8E9D-A35660E9C9BF@php.net> X-Mailer: Apple Mail (2.3826.600.51.1.1) From: ramsey@php.net (Ben Ramsey) --Apple-Mail=_BAC74DB4-98A9-409C-A255-C627B24F1AB2 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On Jun 29, 2025, at 18:39, Thomas Nunninger = wrote: >=20 > Hi, >=20 >> I=E2=80=99d like to request *RFC karma* to create a new proposal = titled "*Fail-Fast Assertion Operator (|=3D>!|)"*. >> *About the Proposal:* >> The idea is to introduce a new *fail_fast_assertion_operator* to PHP = that provides a concise and readable way to assert that an expression is = valid and immediately fail otherwise. >> *Example 1:* >> $name =3D null; >> $name =3D>! die("Missing name") > This is equivalent to: >> if (!$name) { >> die("Missing name"); >> } >> *Example 2:* >> $username =3D>! throw new Exception("Missing username"); >> $password =3D>! throw new Exception("Missing password"); >> is_valid($username, $password) =3D>! exit("Invalid credentials"); >> This is equivalent to: >> if (!$username) { >> throw new Exception("Missing username"); >> } >> if (!$password) { >> throw new Exception("Missing password"); >> } >> if (!is_valid($username, $password)) { >> exit("Invalid credentials"); >> } >> The goal is to improve readability and reduce boilerplate in = fail-fast validation scenarios. This is particularly useful in input = validation, functional pipelines, and early guard clauses. >> I=E2=80=99d like to open the discussion and collaborate with the = community to refine and assess its value and implementation feasibility. >> Please let me know if anything else is required from my side. >=20 >=20 > That seems to work today (https://3v4l.org/14aPa): >=20 >=20 > try { > $name ?? throw new Exception("variable is null or not defined"); > } catch (Exception $e) { > echo $e->getMessage() . "\n"; > } >=20 > try { > $name =3D ''; > $name ?: throw new Exception("variable is falsy"); > } catch (Exception $e) { > echo $e->getMessage() . "\n"; > } >=20 >=20 > Regards, >=20 > Thomas You can also use logical OR (||), similar to other languages: $name || throw new Exception("variable is falsy"); Cheers, Ben --Apple-Mail=_BAC74DB4-98A9-409C-A255-C627B24F1AB2 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP -----BEGIN PGP SIGNATURE----- iHUEAREIAB0WIQToXQMR3fpbrPOmEOewLZeYnIwHGwUCaGHRsgAKCRCwLZeYnIwH GxsWAP4ofKiQbfCKCxnEd/39gDlC83l2J9X2GzKrIt29XedpfwD/cLDJK/tPo+06 8wlLhhADEz4FECLqe/HcgDd4dSj44UA= =1TlW -----END PGP SIGNATURE----- --Apple-Mail=_BAC74DB4-98A9-409C-A255-C627B24F1AB2--