«L'organigramme d'exécution de la classe Db fourni ci-dessus est également publié pour que vous puissiez vous familiariser avec.Nous avons parlé de la méthode Db de requête de base de données ThinkPHP Aujourd'hui, nous parlerons brièvement de la mise en œuvre du modèle. classe. Concept de modèle, cette utilisation représente la grande majorité de l’utilisation du framework.
Ensuite, Kaka continuera à mener une analyse approfondie du modèle sur la base de ce qui précède, alors préparez maintenant votre banc et mangez quelques graines de melon pour lire cet article !
La deuxième fonctionnalité est la super classe (trait), qui implémente en fait une fonction similaire à l'héritage multiple, mais rappelez-vous que PHP n'a pas d'héritage multiple et que les deux concepts ne peuvent pas être confondus.
Ensuite, il y a aussi un dossier modèle au bas du framework, qui utilise également les mêmes fonctions que la classe DB.
Par exemple, connecteurs, requêtes, générateurs
Après une brève compréhension, nous devons comprendre le modèle Un des cas a été analysé, juste pour la mise en œuvre d'un cas !
Ce cas utilise les nouvelles actions du modèle Analyse de cas et analyse approfondie du code source.
Tout d'abord, vous devez créer le fichier modèle. Kaka utilise toujours la ligne de commande pour créer des fichiers. L'avantage d'utiliser la ligne de commande pour créer des fichiers est de vous éviter de faire des erreurs avec l'espace de noms lors de la création. fichiers .
Ensuite, implémentez la première fonction et utilisez le modèle pour l'ajouter. Le contenu de cette pièce est vraiment très simple, juste un. quelques clics Cette étape est très basique. Le travail principal de Kaka est d'analyser le processus de mise en œuvre pour tout le monde.
Le cas dans le contrôleur est le suivant. Faites attention à la manière d'écrire Kaka ici.
Permettez-moi de parler brièvement de la raison pour laquelle Kaka écrit de cette façon et quels sont les avantages de l'écrire de cette façon.
Tout d’abord, il est essentiel de présenter la classe modèle.
Déclarez ensuite une variable
La dernière étape consiste à attribuer la classe de modèle à la variable déclarée lors de l'initialisation du contrôleur.
Ensuite, utilisez simplement la variable déclarée lorsque vous l'utilisez. L'avantage est que cela peut réduire la quantité de code modifié en cas de conflit ultérieur entre les noms de vos modèles.
Vous pouvez penser à un scénario dans lequel vous prédéfinissez un nom de modèle, puis souhaitez modifier le nom du modèle plus tard. À ce stade, si vous suivez la méthode d'écriture de Kaka, vous n'avez besoin que du contrôleur. l'initialisation peut être effectuée avec une seule ligne de code.
Sinon, tout le code doit être modifié, c'est pourquoi Kaka l'écrit ainsi.
Exécutons-le d'abord et voyons les résultats de l'exécution.
Selon les résultats ci-dessus, nous pouvons savoir qu'il n'y a aucun problème avec la logique du code. Ensuite, nous procéderons à une entrée. Analyse approfondie de la méthode de sauvegarde et examen du modèle. Quelle est la différence avec la méthode d'exécution de la classe Db ?
Analyse approfondie de la méthode de sauvegarde
Tout d'abord, vous devez comprendre dans quel fichier ce code sera exécuté.
Si vous comprenez tous que ceci $this->userModel
est un objet de la classe dans le modèle, alors allez directement au fichier modèle. Jetez un oeil à l'intérieur.
En fait, peu importe que vous lisiez ce fichier ou non. Nos fichiers de modèle personnalisés doivent être hérités des fichiers de modèle, qui sont les fichiers que Kaka vous a montrés au début de cet article et qui seront utilisés dans le modèle. .
Ensuite, nous arrivons à la classe de modèle en bas du frameworkthinkphp/library/think/Model.php
.
Vous devriez comprendre un peu après avoir vu cette méthode. Même si vous ne lisez pas la documentation, vous devriez la comprendre tout de suite. Lorsque la méthode de sauvegarde n'a qu'un seul paramètre, il est ajouté, et quand il y en a. est un deuxième paramètre, il est mis à jour.
Étant donné que le paramètre donné dans le cas de Kaka est un tableau, le premier jugement ne sera pas exécuté.
Ensuite, nous procéderons à une analyse approfondie de Analyse approfondie du modèle de requête de base de données ThinkPHP
dans cette méthode de sauvegarde.
Jetons un coup d'œil à ce que fait cette méthode.
D'après la figure ci-dessus, nous pouvons savoir que le paramètre passé est un tableau, qui correspond aux données dont nous avons besoin pour ajouter.
L'étape la plus importante dans l'image ci-dessus est cette ligne de code$this->setAttr($key, $value, $data);
Selon les invites, vous arrivez à cette méthode Les valeursdes trois paramètres ont. a également été imprimé, donc le jugement est correct. Il n'y aura pas d'exécution, seulement l'étape finale de définition des propriétés de l'objet de données.
Le modificateur Selon l'image ci-dessus, le résultat final du retour sera directement renvoyé à $this->checkBeforeSave($data, $where)
, qui est l'image ci-dessous.
La ligne de code suivante $result = $this->exists ? $this->updateData($where) : $this->insertData($sequence);
doit être comprise attentivement.
Tout d'abord, vous pouvez voir le premier attribut, qui est $this->exists
Connaissez-vous cette valeur Oui, lors de la vérification des données avant d'écrire, elle sera définie sur true s'il y a un où ? condition. Veuillez voir l'image ci-dessous.
Donc, le code exécutera $this->insertData($sequence)
cette méthode, dans cette méthode, nous ne le faisons pas. Je ne fais attention à rien, l'accent principal est simplement de savoir comment ajouter des données.
Concentrez-vous simplement sur la zone encerclée par Kaka.
Ensuite, le code viendra à la méthode d'insertion. Dans cette méthode, $this->parseOptions();
voici le 分析表达式(可用于查询或者写入操作)
contenu analysé auparavant.
Un connecteur est utilisé ici. Ce connecteur est un objet injecté par injection de dépendances dans le constructeur de cette classe.
Ensuite, vous arriverez à la méthode thinkphp/library/think/db/Connection.php
de ce fichier. insert
pour exécuter l'instruction SQL, car l'instruction sql a déjà été générée. Cette méthode sera analysée en profondeur dans une nouvelle section ci-dessous. execute
, puis récupérez les paramètres liés et effacez-les Enfin, utilisez l'opération d'exécution pour exécuter l'instruction SQLbuilder
.
Le cas est toujours le cas utilisé dans la section précédente
Tout d'abord, nous devons clarifier les paramètres de cette méthode. Il y a trois paramètres dans cette méthode, décrivant principalement les premier et deuxième paramètres. execute
d'initialiser la connexion à la base de données. $this->initConnect(true);
. deploy
Après avoir analysé le code, nous avons trouvé cet élément de configuration dans le fichier de configuration de la base de données. Cet élément de configuration est la méthode de déploiement de la base de données.
0 centralisé (serveur unique), 1 distribué (serveur maître-esclave). Dans ce cas, ou en fonctionnement réel du projet, les bases de données distribuées ne seront pas utilisées dans le framework, il n'est donc pas nécessaire de le comprendre. .
Ensuite, le code continuera à s'exécuter $this->linkID = $this->connect();
, c'est-à-dire que le commentaire donne un indice sur la base de données unique par défaut.
Dans cette méthode, l'endroit où la capture d'écran de Kaka est prise sera jugé comme prenant en charge plusieurs connexions par l'ID de connexion à la base de données.
Ensuite, le deuxième jugement obtiendra directement les informations de configuration des paramètres et le fichier de configuration de la base de données obtenus au préalable dans le constructeur de cette classe, et enfin le renverra à l'attribut config.
Ensuite, analysez le contenu du bloc de paramètres de connexion. Le contenu de ce bloc détermine la valeur de l'index des paramètres dans les informations de configuration. Cette valeur Le fichier de configuration est un tableau vide, il renvoie donc vrai.
Le deuxième jugement indiquant s'il s'agit d'un tableau retournera également vrai.
Ainsi, cette condition de jugement est établie et l'instruction de jugement if sera exécutée.
Un petit point de connaissance ici est la connaissance de l'opérateur 与或非
.
et : renvoie vrai si toutes les conditions sont vraies
ou : renvoie vrai tant qu'une condition est vraie
Les propriétés de ce type dans l'image ci-dessus params
ont été déclarées à l'avance Ici, vous n'avez besoin de ces paramètres que lorsque pdo se connecte à mysql. .
Afin de faciliter votre compréhension, Kaka a imprimé ce paramètre pour tout le monde, veuillez consulter l'image ci-dessous.
En d'autres termes, les paramètres pdo ne sont en fait qu'une série de constantes déclarées.
L'étape suivante consiste à se connecter à la base de données à l'aide de pdo et à renvoyer les informations de connexion à $this->linkID
, jusqu'à ce que la connexion à la base de données soit initialisée ici.
Ensuite, il sera exécuté en utilisant l'instance d'opération de PDoexecute
Cette méthode est une méthode intégrée qui renvoie ou affecte finalement le nombre d'enregistrements.
Cette section commence par comprendre les fichiers requis par le modèle, puis ajoute le comportement à le modèle. Comportement d’analyse approfondie du code source.
Dans le processus d'analyse du code source, certaines parties n'ont pas été entièrement expliquées, mais les parties clés ont été passées en revue.
Enfin, la méthode execute
est analysée en profondeur Pourquoi devrions-nous analyser cette méthode Parce que cette méthode est la dernière étape dans l'exécution de toutes les opérations.
«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 sa carrière. J'espère que les articles de Kaka dans l'immense Internet. Je peux vous apporter un peu d'aide Silk. 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!