I would also suggest supporting readonly classes and creating special
attributes to help map data fields to constructor arguments. Something like
this:

readonly class User {
    public function  __construct(
        #[PDOField('user_id')]
        public string $userId,
        #[PDOField('user_name')]
        public string $userName,
        #[PDOField('user_address')]
        public ?string $userAddress = '', // Optional field with default
value
    );
}

--
Best regards,
Alex


On Fri, Jan 19, 2024 at 9:05 AM Saki Takamachi <s...@sakiot.com> wrote:

> Hi Frederik
>
> > First off, please excuse me if I’ve done something wrong related to the
> usage of the mailing list. This all is completely new to me.
>
> Welcome to the internal mailing list! I had looked the pull request, and
> I'm pleased to have received your email promptly.
>
> > Thank you, the link was originally on the text "on GitHub" but it seems
> to have been stripped.
>
> Since mailing lists are text rather than HTML, you cannot attach links to
> strings.
>
> > I hereby want to propose a new fetch mode for PDO. I’ve detailed the
> motivation for it on GitHub. I haven’t actually written the code for it,
> but it should not be too difficult.
>
> Now, I agree that it is often not possible to use `PDO::FETCH_CLASS`
> because DB column names are typically snake case and variables and
> properties are camel case.
>
> IMHO, passing arguments to the constructor in order is a good approach,
> but I think another option would be to give attributes to properties and
> map data appropriately when using PDO::FETCH_CLASS.
>
> e.g.
> ```
> #[ColumnName('user_name')]
> private string $userName;
> ```
>
> In addition to the concerns mentioned in the pull request, I'm also
> concerned that more modes with similar functionality will confuse users.
>
> Regards.
>
> Saki
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: https://www.php.net/unsub.php
>
>

Reply via email to