On 8/17/20 7:14 PM, Lokrain wrote:


On Mon, 17 Aug 2020 at 19:46, Mathieu Rochette <math...@rochette.cc> wrote:

    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,

Why do you use visibility modifier inside here?

This the new PHP 8 feature brought by the Constructor Property Promotion RFC: https://wiki.php.net/rfc/constructor_promotion <https://wiki.php.net/rfc/constructor_promotion>




           parent string $name,

       ) {

C# has something like this ) : base($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


--
Mathieu Rochette

Reply via email to