«Cet article concerne principalement l'apprentissage de la façon dont la méthode __make est exécutée dans chaque méthode, et comment utiliser le conteneur pour appeler la configuration afin d'obtenir les informations de configuration maintenant que nous avons appris le conteneur.
”
Analyse de la méthode bindParams
Analysons la méthode bindParams
.
Concernant le transfert de paramètres, il s'agit d'une classe de réflexion. Le deuxième paramètre ne sera pas expliqué pour le moment. Il n'y a pas encore de scénario de réponse.
La première valeur du paramètre$reflect
Utilisez la méthode de réflexion $reflect->getNumberOfParameters()
pour obtenir le nombre de paramètres dans la méthode correspondante dans le cours de réflexion. D'après ce qui précède, il s'agit de la méthode __make. Le nombre de paramètres de seulement deux méthodes a été obtenu dans le code du conteneur, l'une est la méthode __make et l'autre est le constructeur de la classe de réflexion.
Comme il n'existe pas encore de scénario pour passer des variables vars, nous allons sauter cette section sans l'étudier pour le moment.
Le code$params = $reflect->getParameters();
utilise également la réflexion pour obtenir les paramètres de la méthode.
Les résultats que vous pouvez voir après l'impression sont deux ensembles de données.
Alors, d'où vient cet ensemble de données ? Faites défiler vers le haut et jetez un œil à ce qu'est ce paramètre $reflect
et vous comprendrez.
La classe de réflexion thinkApp n'a pas de méthode __make, donc les paramètres du constructeur seront obtenus.
Ensuite, il existe une méthode __make dans la classe de réflexion thinkLog, donc les paramètres de __make seront renvoyés, comme indiqué ci-dessous.
Tout comme une classe comme thinkLog, qui possède à la fois une méthode __make et un constructeur, la méthode bindParams
sera appelée deux fois. Vous devez tous comprendre ceci. exactement la logique de l'image ci-dessous.
L'étape suivante concerne les paramètres obtenus dans la classe de réflexion en boucle.
Récupérez le nom du paramètre et obtenez la classe de réflexion correspondante
Enfin, transmettez la classe de réflexion obtenue à la méthode getObjectParam
.
Il n'y a pas beaucoup de contenu dans cette getObjectParam
méthode.
Puisque $vars
est un tableau vide du début à la fin, l'opération de suppression du premier élément du tableau et de détermination s'il s'agit d'une fermeture ne sera pas exécutée.
finira par revenir pour exécuter la méthode make
Ensuite, la méthode make renverra l'instance directement depuis le conteneur
Lorsqu'une classe de réflexion existe __make méthode, return $method->invokeArgs(null, $args);
sera finalement exécutée, et la méthode de la classe de réflexion sera exécutée avec des paramètres
Utilisez le conteneur pour appeler la classe de configuration
Maintenant que le code source du conteneur a été lu. Je l'ai fait une fois, puis-je utiliser un conteneur pour y parvenir ?
Bien sûr, c'est possible. Ici, vous devez faire attention à l'espace de noms de Kaka Pour la commodité d'une révision future, le nom de la classe est également nommé Container, j'ai donc ajouté un alias. Le temps n'est pas nécessaire !
Pour l'instant, le code source du conteneur est presque expliqué. Kaka fera un organigramme complet plus tard pour que tout le monde puisse le consulter.
«La persévérance dans l'apprentissage, la persévérance dans les blogs et la persévérance dans le partage sont les convictions auxquelles Kaka a toujours adhéré depuis ses débuts. J'espère que les articles de Kaka sur l'immense Internet pourront vous apporter. un peu d'aide. Je m'appelle Kaka, à la prochaine fois
»
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!