J'essaie de créer un objet avec un paramètre à la fonction de chargeur tout en utilisant un chemin d'espace de noms raccourci. Il va comme,Créer un objet avec un nom de classe de variable et un espace de noms
use Com\Core\Service\Impl as Impl;
class Load {
public static function service(String $class, array $params = array()){
try {
$ucfirstclass = ucfirst($class);
if (interface_exists('\\Com\\Core\\Service\\' . $ucfirstclass)) {
$ref = "Impl\\".$ucfirstclass;
return new $ref();
} else {
throw new Exception("Service with name $class not found");
}
} catch (\Throwable $ex) {
echo $ex->getMessage();
}
}
}
Tout en appelant comme,
$userService = Load::service("user");
il jette une exception
Class 'Impl\User' not found
Bien que ça va marcher très bien si je vais juste remplacer "Impl" dans l'implémentation Load :: service() avec le chemin complet "Com \ Core \ Service \ Impl".
Je suis nouveau avec ça. Quelqu'un peut-il aider ici pourquoi ne puis-je pas utiliser raccourcir le chemin "Com \ Core \ Service \ Impl comme Impl"?
Fait sens. Merci pour l'explication. – nks