Bonsoir,
Je travail sur un petit sujet avec symfony et doctrine.
L'idée étant d'avoir deux interfaces sur un Repository pour garantir qu'il est compatible avec un autre objet.
Donc :
Deux interfaces : IDataset, IFilters
Inclusent dans un objet abstrait :
AbstractRepository qui sert du coup de classe de référence pour tout les repositories qui doivent avoir la compatibilité avec l'objet.
Qui est du coup le repo de l'entity :
Supposons le cas le plus simple depuis un controlleur natif qui fait rien de dingue :
Dans ce cas là l'interface n'est pas détéctée.
Maintenant en reflection de bas niveau pour contrôler la classe sans passer par tout les objets "boites noires/no contrôle" :
Là l'interface est détectée.
Donc c'est évidant qu'il me manque une info liée à doctrine, mais je ne trouve rien dans la doc qui puisse m'aiguiller. Si quelqu'un sait pourquoi cette m**** infâme ne fait pas strictement ce que je lui dis ça serait... super cool ?
Modifié par gray_magic (04 Sep 2021 - 21:13)
Je travail sur un petit sujet avec symfony et doctrine.
L'idée étant d'avoir deux interfaces sur un Repository pour garantir qu'il est compatible avec un autre objet.
Donc :
Deux interfaces : IDataset, IFilters
Inclusent dans un objet abstrait :
abstract class AbstractRepository extends ServiceEntityRepository implements IDataset, IFilters
AbstractRepository qui sert du coup de classe de référence pour tout les repositories qui doivent avoir la compatibilité avec l'objet.
final class TestsRepository extends AbstractRepository
Qui est du coup le repo de l'entity :
\App\Entity\Tests
Supposons le cas le plus simple depuis un controlleur natif qui fait rien de dingue :
$repository = $this->getDoctrine()->getManager()->getRepository("\App\Entity\Tests");
if ($repository instanceof \App\Objects\Grid\Components\Interfaces\Filters\IFilters) {
die("ok !");
}
Dans ce cas là l'interface n'est pas détéctée.
Maintenant en reflection de bas niveau pour contrôler la classe sans passer par tout les objets "boites noires/no contrôle" :
$class = "App\Repository\TestsRepository";
$ref= new \ReflectionClass($class);
if($ref>implementsInterface('App\Objects\Grid\Components\Interfaces\IDataset') && $ref->implementsInterface('App\Objects\Grid\Components\Interfaces\Filters\IFilters')) die('ok !');
Là l'interface est détectée.
Donc c'est évidant qu'il me manque une info liée à doctrine, mais je ne trouve rien dans la doc qui puisse m'aiguiller. Si quelqu'un sait pourquoi cette m**** infâme ne fait pas strictement ce que je lui dis ça serait... super cool ?
Modifié par gray_magic (04 Sep 2021 - 21:13)