Je crois que ce concept est appelé résolution de nom de classe. L'exemple d'utilisation que vous avez donné ressemble beaucoup à une définition pour un conteneur d'injection de dépendance. Avec un conteneur DI, vous liez vos définitions dans un format de tableau, comme le code que vous avez donné, puis lorsque vous avez besoin de la classe définie, toutes vos injections sont automatiquement résolues.
Par exemple, supposons que vous avez un conteneur de DI avec les définitions suivantes:
$containerDefinitions = [
Database\DatabaseAccessorInterface::class => Database\ConcreteDatabaseAccessor::class,
Data\QueryExecutionHandlerInterface::class => Data\ConcreteQueryExeuctionHandler::class
];
... et vous avez le constructeur de la classe ConcreteQueryExeuctionHandler
définie comme ceci:
public function __construct(DatabaseAccessorInterface $databaseAccessor)
{
$this->databaseAccessor = $databaseAccessor;
}
... Eh bien, lorsque vous récupérez la définition QueryExecutionHandlerInterface
du conteneur DI, avec quelque chose comme ceci:
$queryExecutionHandler = $container->get(Data\QueryExecutionHandlerInterface::class);
... puis il va auto-injecter le ConcreteDatabaseAccessor
lors de la construction de ConcreteQueryExecutionHandler
.
Ceci est un exemple très spécifique, mais je crois que le code que vous avez fourni est un tableau de définition de conteneur DI.
non monsieur je ne suis pas poser des questions sur l'opérateur de résolution de portée im poser des questions sur l'utilisation du mot-clé class avec l'opérateur de résolution de portée dans ce façon –
Mon mauvais, mis à jour pour mieux refléter la question. – neuromatter
vous êtes mon héros merci beaucoup par la façon dont j'ai beaucoup cherché, mais n'a pas été en mesure de trouver un résultat parce que je ne savais pas le concept –