On Tue, Apr 23, 2024 at 7:30 AM Benjamin Außenhofer <kont...@beberlei.de> wrote: > > Hi internals, > > My PR for #[\Deprecated] attribute was in hibernation for a long while now > and after some off-list discussion a few weeks ago I have decided to revisit > it and asked Tim to help me out with the work. > > Tim has cleaned up the PR quite a bit and also worked in additional features > such as #[Deprecated] support in stub generation. > > While there are still some small todos, at this point we want to restart the > discussion about the RFC for inclusion in 8.4: > > RFC: https://wiki.php.net/rfc/deprecated_attribute > PR: https://github.com/php/php-src/pull/11293 > Old discussion: https://externals.io/message/112554#112554 > > Let me know about your questions and feedback. > > greetings > Benjamin
I skimmed through the previous discussion and didn't see anything about adding a `since` property. This is occasionally useful, at least in my limited usage of it in Rust. The names below are modelled after the names in [Rust's deprecated attribute][1], but "note" is the same as the proposed "message": ```php #[Attribute(Attribute::TARGET_METHOD | Attribute::TARGET_FUNCTION)] class Deprecated { public function __construct( public readonly ?string $note = null, public readonly ?string $since = null ) { } } #[Deprecated(since: "1.3", note: "this is not good, use good_pls_use")] function bad_dont_use() {} #[Deprecated("this wasn't meant to be public, use good_pls_use instead") function oops_dont_use() {} function good_pls_use() {} ``` In Rust, you get a message for each of ["since" and "note"][2]. In PHP, this might look something like: > Deprecated: Function bad_dont_use() is deprecated since 1.3, > this wasn't meant to be public, use good_pls_use instead in %s > on line %d [1]: https://doc.rust-lang.org/reference/attributes/diagnostics.html#the-deprecated-attribute [2]: https://github.com/rust-lang/rfcs/blob/master/text/1270-deprecation.md#intended-use