Maison >cadre php >PensezPHP >La méthode thinkphp D renvoie quoi

La méthode thinkphp D renvoie quoi

青灯夜游
青灯夜游original
2022-03-15 18:51:271724parcourir

Dans thinkphp, la méthode D peut renvoyer l'objet modèle instancié. La méthode D est utilisée pour instancier une classe de modèle personnalisée. Il s'agit d'une encapsulation de l'instanciation de la classe Model par le framework ThinkPHP. La syntaxe est "D('[project://][group/]model','model layer name. ')", La valeur de retour est l'objet modèle instancié.

La méthode thinkphp D renvoie quoi

L'environnement d'exploitation de ce tutoriel : système Windows 7, version thinkphp v5.1, ordinateur Dell G3.

La méthode D devrait être la méthode la plus couramment utilisée. Elle est utilisée pour instancier des classes de modèles personnalisées. Il s'agit d'une encapsulation de l'instanciation de classe Model par le framework ThinkPHP. Elle implémente également le mode singleton et prend en charge les appels inter-projets et de groupe. le format d'appel est le suivant :

D('[项目://][分组/]模型','模型层名称')

La valeur de retour de la méthode D est l'objet modèle instancié.

La méthode D peut détecter automatiquement la classe de modèle. Si une classe de modèle personnalisée existe, la classe de modèle personnalisée sera instanciée. Si elle n'existe pas, la classe de base Model sera instanciée en même temps, pour le modèle qui. a été instancié, il ne répétera pas la désinstantiation. L'utilisation la plus courante de la méthode

D consiste à instancier un modèle personnalisé du projet en cours. Par exemple :

// 实例化User模型
$User = D('User');

importera le fichier Lib/Model/UserModel.class.php sous le projet en cours, puis instanciera le UserModel. classe, donc, le code réel peut être équivalent à ce qui suit :

import('@.Model.UserModel');
$User = new UserModel();

La méthode D peut prendre en charge l'instanciation de modèles entre groupes et projets, par exemple :

//实例化Admin项目的User模型
D('Admin://User')
//实例化Admin分组的User模型
D('Admin/User')

À partir de la version 3.1, en raison de la prise en charge supplémentaire des modèles hiérarchiques, méthode D peut également être instancié Transformez d'autres modèles, par exemple :

// 实例化UserService类
$User = D('User','Service');
// 实例化UserLogic类
$User = D('User','Logic');
D('User','Service');

importera Lib/Service/UserService.class.php et l'instanciera.

Connaissances étendues : la principale différence entre D et M est que

La méthode M n'a pas besoin de créer un fichier de classe modèle et la méthode M ne lit pas la classe modèle, donc la vérification automatique n'est pas valide par défaut, mais il peut être attribué dynamiquement. La méthode est implémentée

et la méthode D doit créer une classe modèle.

Nous pouvons utiliser les deux méthodes suivantes pour créer un objet cartographique d'une table de données

La première : $Test = D('Test')$Test = D(‘Test')

第二种:$Test = new Model(‘Test')

虽然这两种都可以对数据进行select,insert,delete,udpate操作,在

数据验证上有很大的不同,

用第一种方式实例一个模型就会有数据检查功能,如果 title 没有填写的话就会提示 “请输入标题” (这个是tp提供的一个自动验证功能,当然也需要在相应的model中定义好验证条件);

如果用第二种就没有了这个数据验证功能,需要手动验证。

总结如下:

  • D函数实例化的是你当前项目的Lib/Model下面的模块。

  • 如果该模块不存在的话,直接返回实例化Model的对象(意义就与M()函数相同)。

  • 而M只返回,实例化Model的对象。它的$name参数作为数据库的表名来处理对数据库的操作。

通俗点说:

  • D就是实例化一个基于Model文件的Model。

  • M则是通过直接实例化Model方法(ThinkPHP基类)来动态的实例化一个Model对象,即使这个对应的Model文件不存在。

再通俗一点说:

  • M实例化参数是数据库的表名。

  • D实例化的是你自己在Model文件夹下面建立的模型文件。

  • D就是在你没有定义模型的时候,系统自动帮你定义一个模型,这样你才进行简单的数据输入或者输出。

  • 每一个Action文件都应该对应Model文件的,如果你定义了Model的话,

如:$Form = D(“User”)就可以改成$Form = new  UserModel();

La seconde : $ Test = new Model('Test')

Bien que les deux puissent effectuer des opérations de sélection, d'insertion, de suppression et de mise à jour sur les données, il existe une grande différence dans la

vérification des données 🎜🎜Utilisez la première si vous. instanciez un modèle, il aura une fonction de vérification des données. Si le titre n'est pas renseigné, il vous demandera "Veuillez saisir le titre" (il s'agit d'une fonction de vérification automatique fournie par TP, et bien sûr les conditions de vérification doivent être définies. dans le modèle correspondant) 🎜 🎜Si vous utilisez la deuxième méthode, vous n'aurez pas cette fonction de vérification des données et devrez la vérifier manuellement. 🎜🎜Le résumé est le suivant : 🎜
  • 🎜La fonction D instancie le module sous la Lib/Model de votre projet actuel. 🎜
  • 🎜Si le module n'existe pas, retournez directement l'objet du Modèle instancié (la signification est la même que la fonction M()). 🎜
  • 🎜Et M renvoie uniquement l'objet qui instancie le modèle. Son paramètre $name est utilisé comme nom de table de la base de données pour gérer les opérations sur la base de données. 🎜
🎜En termes simples : 🎜
  • 🎜D consiste à instancier un modèle basé sur un fichier modèle. 🎜
  • 🎜M instancie dynamiquement un objet Model en instanciant directement la méthode Model (classe de base ThinkPHP), même si le fichier Model correspondant n'existe pas. 🎜
🎜Pour faire plus simple : 🎜
  • 🎜Le paramètre d'instanciation M est le nom de la table de la base de données. 🎜
  • 🎜D instancie le fichier modèle que vous avez créé dans le dossier Modèle. 🎜
  • 🎜D signifie que lorsque vous ne définissez pas de modèle, le système définit automatiquement un modèle pour vous, afin que vous puissiez effectuer une simple saisie ou sortie de données. 🎜
  • 🎜Chaque fichier Action doit correspondre à un fichier Modèle, 🎜
🎜Par exemple : $Form = D("User" ) peut être remplacé par $Form = new UserModel(); (L'utilisateur fait référence au nom de votre fichier modèle). 🎜🎜【Recommandation de tutoriel connexe : 🎜thinkphp framework🎜】🎜

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn