Bonjour, voilà un petit moment que je m'arrache le cheveux avec une banalité sans nom.
Ce code fonctionne à merveille

<?php
$opt = new OptText($field);
$opt->render();

Mais alors celui là me pond une erreur : Class introuvable !

<?php
$class_name = 'OptText';
$opt = new $class_name($field);
$opt->render();

Si quelqu'un a une idée je suis preneur :)

Merci

2 réponses


Damarus
Auteur

J'ai essayé de passer par une Reflection et j'ai eu une erreur logique, il fallait que je renseigne le namespace.
Ce qui a donné :

<?php
$class_name = 'damarus\OptText';
$reflectionObject = new ReflectionClass($class_name);
$opt = $reflectionObject->newInstanceArgs($field);
$opt->render();

Puis j'ai eu une idée, reprendre mon code avec ma variable et renseigné aussi le namespace.

<?php
$class_name = 'damarus\OptText';
$opt = new $class_name($field);
$opt->render();

Merveilleux ça fonctionne. Pourquoi ? Aucune idée, si j'écris le nom de la classe en dur je n'ai pas besoin du namespace, ce qui est logique vue que je l'appelle bien en haut de mon script. En revanche si je passe le nom de la class en variable je dois le renseigner.

Donc si une autre personne à le même souci et tombe sur ce post : Re-renseigne le namespace même s'il est déjà défini plus haut.

Merci pour la réponse rapide.