Différence : la méthode M est utilisée pour instancier efficacement une classe de modèle de base tandis que la méthode D est utilisée pour instancier une classe de modèle définie par l'utilisateur ; La méthode M n'a pas besoin de créer un fichier de classe de modèle et la méthode M ne lit pas la classe de modèle tandis que la méthode D doit créer une classe de modèle ;
L'environnement d'exploitation de ce tutoriel : système Windows 7, thinkphp version 6, ordinateur Dell G3.
La différence entre la méthode M et la méthode D
Dans ThinkPHP, la méthode M et la méthode D sont utilisées pour instancier une classe de modèle, et La méthode M est utilisée pour instancier efficacement une classe de modèle de base, tandis que la méthode D est utilisée pour instancier une classe de modèle définie par l'utilisateur.
La méthode M n'a pas besoin de créer un fichier de classe de modèle. La méthode M ne lit pas la classe de modèle, donc la vérification automatique n'est pas valide par défaut, mais elle peut être réalisée via dynamique. affectation et La méthode D doit créer une classe modèle.
Utiliser la méthode M
Si la situation suivante se produit, veuillez envisager d'utiliser la méthode M :
Lors de l'exécution d'opérations CURD simples sur des tables de données sans logique métier complexe
Lorsque seules les tables individuelles ont une logique métier relativement complexe, utilisez la méthode M en combinaison avec la classe CommonModel instanciée
La méthode M peut même simplement examiner les données correspondant au nom de la table de paramètres Table. opérations :
$User = M('User');
Utilisez la méthode D
Si la situation suivante se produit, veuillez envisager d'utiliser la méthode D :
Vous devez utiliser certaines fonctions avancées dans le modèle ThinkPHP telles que la fonction de vérification automatique (implémentée dans la méthode create()), modèles associés, etc.
La logique métier est complexe et implique de nombreuses tables
La logique métier est définie dans une classe de modèle personnalisée (sous le répertoire Lib/Model) , et souhaitez implémenter ces logiques métier dans l'opération
De plus, la méthode D ne prend pas en charge les appels inter-projets, vous devez utiliser :
$User = D('User', 'Admin'); // 实例化 Admin 项目下面的 User 模型 $User = D('Admin.User'); // 启用了项目分组
Astuces
Une fois le regroupement de projets activé, la classe Model ne correspond pas nécessairement au regroupement de projets. Les classes de modèles partagées entre plusieurs groupes de projets sont placées dans le répertoire Model et peuvent être instanciées directement à l'aide de D('ModelName'). Et D('User.UserInfo') ne signifie pas que User doit être un groupe de projet, ou il peut simplement s'agir d'un répertoire de classification de fichiers sous Model. D('User.UserInfo') instancie le modèle UserInfo dans le répertoire User. gentil.
Résumé
La méthode M et la méthode D peuvent être utilisées directement lorsque le fichier de classe de modèle n'existe pas, mais la méthode M est évidemment plus efficace mais pour utiliser la logique métier dans la classe de modèle, vous devez utiliser la méthode D ;
Une métaphore plus frappante est la suivante : la méthode M est comme un ordinateur qui vient d'installer le système d'exploitation et ne peut utiliser que certaines fonctions de base ; tandis que la méthode D revient à installer des logiciels d'application tels qu'Office et QQ sur le système installé. puissant, et en même temps l’ensemble de l’ordinateur fonctionne plus lentement.
Recommandations associées : Les 10 derniers didacticiels vidéo thinkphp
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!