Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:111590 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 96262 invoked from network); 17 Aug 2020 17:45:00 -0000 Received: from unknown (HELO php-smtp4.php.net) (45.112.84.5) by pb1.pair.com with SMTP; 17 Aug 2020 17:45:00 -0000 Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id B73F8180511 for ; Mon, 17 Aug 2020 09:45:57 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,HTML_MESSAGE, SPF_HELO_PASS,SPF_PASS autolearn=no autolearn_force=no version=3.4.2 X-Spam-Virus: No X-Envelope-From: Received: from texthtml.net (texthtml.net [62.210.148.97]) by php-smtp4.php.net (Postfix) with ESMTP for ; Mon, 17 Aug 2020 09:45:56 -0700 (PDT) Received: by texthtml.net (Postfix, from userid 65534) id BD8543E277E; Mon, 17 Aug 2020 18:45:55 +0200 (CEST) Received: from cloud.rochette.cc (stunnel_mail_1.mail_default [172.22.0.5]) (Authenticated sender: mathieu@texthtml.net) by texthtml.net (Postfix) with ESMTPA id ABC9C3E05D4 for ; Mon, 17 Aug 2020 18:45:39 +0200 (CEST) To: "PHP internals (internals@lists.php.net)" Cc: Message-ID: <20200817164539.Horde.kYUsO4nuFe1V_fbKiAC6n5E@cloud.rochette.cc> User-Agent: Horde Application Framework 5 Date: Mon, 17 Aug 2020 16:45:39 +0000 Content-Type: multipart/alternative; boundary="=_W_uFwbu-eKrROuEogHEQM2C" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: Constructor parent property promotion From: mathieu@rochette.cc (Mathieu Rochette) --=_W_uFwbu-eKrROuEogHEQM2C Content-Type: text/plain; charset=utf-8 Content-Description: Plaintext Version of Message Content-Transfer-Encoding: 8bit Hi,   I’m writing a message here to receive feedback on a two ideas related to class constructors before going more in details with an RFC. I hope this is appropriate behavior for this list   With the Constructor Property Promotion accepted in PHP 8, there’s a lot less of boilerplate when writing class constructors. I’m suggesting two additional ways of making thing even easier and I hope, readable.   First: I’d like to be able to automatically transfer a constructor property to its parent constructor. I’m thinking of something like that:   ```php class MyCommand extends Command {    public function __construct(        private Connection $connection,        parent string $name,    ) {    } } ```   This would be the equivalent of :   ```php class MyCommand extends Command {    public function __construct(        private Connection $connection,        string $name,    ) {        parent::__construct($name);    } } ```   The second idea is to make the constructor body optional, the first example would now be:   ```php class MyCommand extends Command {    public function __construct(        private Connection $connection,        parent string $name,    ) } ```   This would call the parent constructor automatically even if no "parent" parameter are present. I could even see this enforced by linter to avoid having logic in the constructors.   If there is interest I’d like to try writing an rfc and implement it. I have not much knowledge of the php-src code but I hope this is a small enough change that I’ll be able to tackle. So, at that time if someone is interested in mentoring this little project I’d appreciate it :)     regards,   Mathieu --=_W_uFwbu-eKrROuEogHEQM2C--