Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for array type in ParamConverter #53

Merged
merged 1 commit into from
Nov 10, 2023

Conversation

jingu
Copy link
Contributor

@jingu jingu commented Nov 9, 2023

  • Arura.Sqlの Array Quoting に対応するためにParamConverterが配列を扱えるように変更しました。
  • インターフェイスの名前は ToScalarInterface となっておりarrayだとスカラーとは厳密には呼べないですが、後方互換性を考えてそのままにしてあります。 ToPrimitiveInterface::toPrimitive にすると名前的にも良さそうですが・・・。

例)

SELECT * FROM article WHERE status IN (:status)
<?php
interface ArticleInterface
{
    #[DbQuery(id: 'article_list')]
    public function list(StatusList $status): array;
}
<?php

readonly class StatusList implements ToScalarInterface
{
    public function __construct(private array $statusList)
    {
    }

    public function toScalar(): array
    {
        return $this->statusList;
    }
}
<?php

$articles = $this->article->list(new StatusList(['draft', 'public']));

案2)
ToScalarList インターフェイスを新設

<?php
interface ToScalarListInterface
{
    /** @return array<scalar> */
    public function toScalarList(): array;
}


readonly class StatusList implements ToScalarListInterface
{
    public function __construct(private array $statusList)
    {
    }

    public function toScalarList(): array
    {
        return $this->statusList;
    }
}

@jingu jingu force-pushed the support-array-param-conv branch from dfb9078 to 7c88de4 Compare November 9, 2023 05:07
@koriym
Copy link
Member

koriym commented Nov 10, 2023

Array Quoting に対応

いいですね!

名前が問題ですね。toScalarでは確かにおかしいのですが、arrayはPrimitiveではないようです。
スカラーと配列を総称する名前はないようです。 ... 🤔

BCについては1.0のタイミングで破壊するのも可能ですが、互換性を保って(deprecate)追加するという手もありますね。

@koriym
Copy link
Member

koriym commented Nov 10, 2023

候補

TypeConverterInterface
TypeShifterInterface
TypeCasterInterface

総称する名前がないのならそれぞれ何にという型は含まず、型を変更するという意味にしてはどうかと思いました。

@koriym koriym merged commit e441307 into ray-di:1.x Nov 10, 2023
13 checks passed
@jingu
Copy link
Contributor Author

jingu commented Nov 10, 2023

ありがとうございます。

総称する名前がないのならそれぞれ何にという型は含まず、型を変更するという意味にしてはどうかと思いました。

なるほど。確かに。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants