8768 sujets

Développement web côté serveur, CMS

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 :
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. Smiley fache

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. Smiley eek

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 Smiley lol ? Smiley smile
Modifié par gray_magic (04 Sep 2021 - 21:13)
Smiley banane trouvé :

Ajouter la déclaration du namespace pour le repository cible dans l'Entity concernée :
 Use \App\Repository\TestsRepository;


Et ajouter l’annotation au dessus de la classe de l'Entity\Tests pour effectuer la jonction entre les deux objets :
@ORM\Entity(repositoryClass=TestsRepository::class)


Smiley lolol Smiley censored je vous passe mon avis sur l'usage des commentaires comme fragment logique pour une pseudo compilation... Smiley stupid
Modifié par gray_magic (06 Sep 2021 - 08:57)