Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:130483 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 941421A00BC for ; Sun, 29 Mar 2026 21:43:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1774820586; bh=iA6H0XSgOPZCGLFCi3xez9ZF82n2+gbNslaD/t10K8M=; h=From:Date:Subject:To:From; b=Z6dYOzaNyT4zRnuZpZBkxhqrnJD3JTtWRkdIGE5bV6a3/w6awkRKoHg/OeU2IWxWB gDiioqdI3Xm7TkI8LXXC5OxmUunXoWOkzpYHLCj0V/Y93YVxyT9wW5r32IWrGV6e8Q Mriay7SRD56CZLsqu1lg6Xv9SzJZcP2GXYpOSUmMVb/eC3hDelXYhSHdoBLgTdEfAJ VfHpVPsGUSE3qhDby6QP7KKi0zP+hCB/t9lEMqwKymqNJ7qJ308nCxpv1u1kZKUdtY RkeLYEGUKi/+hDjjzebapAqkYI0RcxhRlaQDm5qFAKuCrueuYuvrsREUrqyAQsiL3a KUWG6oJmK+Aew== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 5D8B118005A for ; Sun, 29 Mar 2026 21:43:05 +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.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_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=4.0.1 X-Spam-Virus: No X-Envelope-From: Received: from mail-yx1-f44.google.com (mail-yx1-f44.google.com [74.125.224.44]) (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 Mar 2026 21:43:05 +0000 (UTC) Received: by mail-yx1-f44.google.com with SMTP id 956f58d0204a3-6501cbb52e5so277289d50.2 for ; Sun, 29 Mar 2026 14:43:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774820579; cv=none; d=google.com; s=arc-20240605; b=kddiOUTqWmTI6HUP8i+NittNW7gjUMDDncLceOO5dD+pM1zn5dgdyAaaKkxLiW48j4 zhmUX7eOA16wkb2FbF45gUEFsCsf+MwZL4OfPb7iPQl2jGFUqDyv0HEEGhQRP7RrqfBs QzTAd9mGz3SEOfdnp4Hx9qDpJ6rS4YZ/Bnefa5Ozzau9ThiwJKsz1oVfYejN7z0dBK3b 9RkZf3hMHGsum0/6LmzmJW5puiNHSgHu4ZvXtl3//KghmEx3kD8HrGedQtsQIfrbNSdd tZCMlR13LaOku+y4hWQ3J3Qdt0Ivt9gRuBA8qFBG8SP+5prMcaHtEY+40LRQEl/KOVIV eKgw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=iA6H0XSgOPZCGLFCi3xez9ZF82n2+gbNslaD/t10K8M=; fh=5KvmJ5K5QBymFDNCdtgpPKEwgSxqOQnCzLzHVTYb8GE=; b=N6O3ewiOp9U7Gmh667Oh0Hr8QkwgfdYd6/YebZHFUsNS/t+qlpVpbltEUJqiL6RDbD dNY4U72z7weOFfG0vOARIyMreBY9lXhfDzoEZA2NJ8M4vKaotSU2SI4z7+Pv9DvbozfS 3hfqcjqJuEcfpzLzDA+Zc9+sjeqJyMzDVs9iwc+67Df2FFtqR5wf/dJ31MyOAiT5bDpu ud48dMfeeMW5UpMfETthBP4DcCtHuD/nN7sAvSj649/7qsKr61W9zOT1YrQnz+Gmd4Ow 7ovk5dhMlMgwsN8VsM6KMM96Mo0Gec9w7cZpMhBr/I5VRISJ5kU2x/YOkLZaAZLuOdDO JVxQ==; darn=lists.php.net ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774820579; x=1775425379; darn=lists.php.net; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=iA6H0XSgOPZCGLFCi3xez9ZF82n2+gbNslaD/t10K8M=; b=VNY4vgPSBGZ5ZMl+Q1afly0RAMcIGOiy3nXdfK7g7F1mliR8IHDw2sJ0ZieIsr1Qj2 A/qq/s3FdxfjZ3yb2CkQ2NOij9f9kVyTsWz/YS7Q0tXbeUg6UmCfLAidbtzd1ukehJ/T hX0fFlTFu2bXIs4D2J2/rRJ9aV4abqgImAq3qnBXobwku4utjgTe8tu+t+TM+iqYS9O/ 1sI2TKbi1JTstLXnDTe2ooFSmwganiWJVnVqWe4XAF6VESjOWu47IQMT5CVPfWKYpM64 mUizUOIMOn2NODONCHED0ryWhPtG1n6jyn1CQ1yoS4edRVY8c83c0LukUpXPhHC3cYkC xOrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774820579; x=1775425379; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=iA6H0XSgOPZCGLFCi3xez9ZF82n2+gbNslaD/t10K8M=; b=FPZGD7HOpA1Kkp7xiwlttiAri8+xaO9FRXunZtxl3mG0AtqPC9BFy28EE8+SvdJ7eR MoXgXBcFxxQ+lCqi8HCtf9epvjBtyxsllpYZAvhIZ3GFwPrWykoCQqpFU/+ez7FEUo4W erX4NRRpjmYoh5jLi1Tx43frl1pn5EFk0KZHcjJC0uAdbGtVF7Lu+QdgdMXcb6Zk3YKv NfZgQ7aUCyqwD8+Bm5osRi9GCrshlnCXQ2yYAZ35pO3jbpo5L0g/Wj2z6YYI+h1zIFLp vZpTCnD1Hu7PckfPNWWtLak/0T3H7EEVLK/wosOKSBX0uXSXgYrMk4XkZX56hGDApFZY BbQQ== X-Gm-Message-State: AOJu0Yz4ZljFoewoQ2Hr5t0nZRHNCi3semONHxL04cRo2P3JU/i51ngf vpp3BObHdgzKaeB8b/wvtsmcApWjmmlAPqGlOCHI5w4zbuS/4OzHzCu9jZUgTBX35Ux4cwGDbTC yc9Z8QZOdG5o+8uffy4L9tuh8WU7nCbQEpsCBpTo= X-Gm-Gg: ATEYQzyDRPZQ5zS8s7gkUExbCHoibcs4jkwSvqPc2kL0dSSGG9KOU2SfZ7hjft8mDmf jGqsROJREYKD9gdabSG5kFkgnBxDk4XuDhj07nyfABeBorWma/oAFWP0Qt5mzJ9jPPCjGzFDffZ 125MY3eJjnXJuBEipqLrIdXuuPDjKEV+NYX1WEWGq4s4Mgkch3HHZLWr/H4NA+iZ9ZJtsbOXb6h nVaDYxeqKBxLasTkKu8h7KXpVm/QPGpO+bALJSinXsUvBvpK2vyXecoR8WW96Z59MdVPMd636yM hSCZj5c= X-Received: by 2002:a05:690c:101:b0:798:67be:f903 with SMTP id 00721157ae682-79bde0b05c3mr100116617b3.39.1774820579191; Sun, 29 Mar 2026 14:42:59 -0700 (PDT) Precedence: list list-help: list-unsubscribe: list-post: List-Id: x-ms-reactions: disallow MIME-Version: 1.0 Date: Sun, 29 Mar 2026 23:42:48 +0200 X-Gm-Features: AQROBzA6RLhMMrEwUBS3BBN1kKyZOJO3l9gA122c-uHSysed7OifF1I5ZPHIMsA Message-ID: Subject: [PHP-DEV] RFC proposal: Invokable interface To: internals@lists.php.net Content-Type: multipart/alternative; boundary="00000000000029afe5064e309eef" From: aldemeery@gmail.com (Osama Aldemeery) --00000000000029afe5064e309eef Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi all, I'd like to propose an Invokable interface, the Stringable equivalent for __invoke(). The idea has come up a few times over the years (most recently in the PR #15492 discussion, where Gina suggested this exact approach) but never had a concrete implementation. I've put one together: https://github.com/php/php-src/pull/21574 It follows the Stringable pattern: auto-implemented for any class defining __invoke(), explicitly implementable with enforcement, and covariant to callable in return type checks. I'm working on a formal RFC and would love feedback before posting it. I'd also like to request wiki karma to create the RFC page =E2=80=94 my wik= i username is *aldemeery*. Thanks, Osama Aldemeery --00000000000029afe5064e309eef Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi all,

I'd like to propose an Invokable interf= ace, the Stringable equivalent for __invoke().

The idea has come up = a few times over the years (most recently in the PR #15492 discussion, wher= e Gina suggested this exact approach) but never had a concrete implementati= on.

I've put one together:=C2=A0https://github.com/php/php-src/pull= /21574

It follows the Stringable pattern: auto-implemented for a= ny class defining __invoke(), explicitly implementable with enforcement, an= d covariant to callable in return type checks.

I'm working on a = formal RFC and would love feedback before posting it.

I'd also l= ike to request wiki karma to create the RFC page =E2=80=94 my wiki username= is=C2=A0aldemeery.

Thanks,

Osama Aldemeery
--00000000000029afe5064e309eef--