EC-CUBE / next-poc

Other
2 stars 4 forks source link

抽象化レイヤー: Doctrine/ORM #10

Open kiy0taka opened 1 year ago

kiy0taka commented 1 year ago

EntityManager

アダプターを作成する。Exceptionもここで変換する。

Doctrine\ORM\ORMException

独自のExceptionに変換する。必要に応じてサブクラスも作成する。

Doctrine\ORM\Mapping

Mapping Doctrineサポート 対応案 懸念事項
Atrributes final classで定義されているので継承して利用することは不可。コードをコピーして名前空間を変更。AnnotationDriver を拡張して独自のアノテーションをロードして仕様変更に対応する。 結構なコード量をコピーして利用することになりそう
XML XSLT変換させれば独自のXMLで利用できそう。 ファイルが分かれるのはめんどくさい。4.2系のやり方と大きく変わる
PHP PHPファイルによるマッピング定義は3.0で削除予定 - staticメソッドでのマッピングはEntity拡張できなさそう。
Annotation 3.0で削除予定。Attributesに移行。 -
YAML バリデーションが効かないので3.0で削除予定。 -
独自のマッピング方法 未定

Doctrine\ORM\{Query,QueryBuilder}

アダプターを作成する。めんどくさい。

Doctrine\ORM\Tools

InstallerControllerでのみ利用されている。インストーラーは別扱いしたほうがいいかも。

Doctrine\ORM\UnitOfWork

CartServiceで利用されている。

EntityManagerのアダプターで吸収できないか検討。

// 前
UnitOfWork::STATE_MANAGED === $this->entityManager->getUnitOfWork()->getEntityState($removed)
// 後
$this->entityManager->isStateManaged($removed);