La méthode m dans le framework php tp est utilisée pour instancier une classe de modèle de base. Son utilisation est : 1. Instancier la classe de modèle de base (Model) 2. Instancier d'autres classes de modèle publiques ; et d'autres informations.
L'environnement d'exploitation de cet article : système Windows 7, version thinkphp v5.1, ordinateur DELL G3
Quelle est l'utilisation de m dans le framework php tp ?
Explication détaillée de la fonction ThinkPHP : M méthode
La méthode M est utilisée. La différence entre l'instanciation d'une classe de modèle de base et la méthode D est la suivante :
1 Pas besoin de personnaliser la classe de modèle, ce qui réduit le chargement des E/S et améliore les performances ; la classe peut être appelée après l'instanciation (la valeur par défaut est la classe Model);
3. Vous pouvez spécifier le préfixe de la table, la base de données et les informations de connexion à la base de données lors de l'instanciation
La puissance de la méthode D se reflète dans la puissance de la classe de modèle personnalisée ; vous encapsulez l'est, mais comme la classe de modèle de base de la nouvelle version du framework ThinkPHP devient de plus en plus puissante, et la méthode M est de plus en plus pratique que la méthode D.
Le format d'appel de la méthode M :
M('[基础模型名:]模型名','数据表前缀','数据库连接信息')
Jetons un œil aux utilisations spécifiques de la méthode M :
1 Instancier la classe du modèle de base (Model)
Lorsqu'aucun modèle n'est défini, nous pouvons utiliser le. méthode suivante Instancier une classe de modèle pour effectuer des opérations :
//实例化User模型 $User = M('User'); //执行其他的数据操作 $User->select();
Cette méthode est la plus simple et la plus efficace, car elle n'a pas besoin de définir de classes de modèle, elle prend donc en charge les appels inter-projets. L'inconvénient est également qu'il n'existe pas de classe de modèle personnalisée, de sorte que la logique métier appropriée ne peut pas être écrite et que seules les opérations CURD de base peuvent être effectuées.
$User = M('User');
est en fait équivalent à :
$User = new Model('User');
signifie faire fonctionner la table think_user. La méthode M possède également une fonction singleton comme la méthode D, et elle ne sera pas instanciée à plusieurs reprises si elle est appelée plusieurs fois. Le paramètre de nom de modèle de la méthode M sera automatiquement converti en minuscules lors de la conversion en table de données, ce qui signifie que la spécification de dénomination de table de données de ThinkPHP est dans un format entièrement en minuscules.
2. Instancier d'autres classes de modèles publiques
La première façon d'instancier est qu'il n'y a pas de définition de la classe de modèle, il est donc difficile d'encapsuler certaines méthodes logiques supplémentaires. Cependant, dans la plupart des cas, vous devrez peut-être simplement étendre. une logique commune. Ensuite, vous pouvez essayer la méthode suivante.
$User = M('CommonModel:User');
L'utilisation modifiée est en fait équivalente à :
$User = new CommonModel('User');
Étant donné que les classes de modèles du système peuvent être automatiquement chargées, nous n'avons pas besoin d'importer manuellement la bibliothèque de classes avant l'instanciation. La classe de modèle CommonModel doit hériter de Model. Nous pouvons définir certaines méthodes logiques communes dans la classe CommonModel, ce qui élimine le besoin de définir des classes de modèles spécifiques pour chaque table de données. Si votre projet contient déjà plus de 100 tables de données, la plupart d'entre elles sont basiques. Pour les opérations CURD, seuls certains modèles en ont. une logique métier complexe qui doit être encapsulée, donc la combinaison de la première méthode et de la deuxième méthode est un bon choix.
3. Transmettez le préfixe de la table, la base de données et d'autres informations
La méthode M a trois paramètres Le premier paramètre est le nom du modèle (peut inclure des classes de modèles de base et des bases de données), et le deuxième paramètre est utilisé pour définir le préfixe de. la table de données (laissez-la vide pour prendre le préfixe de table de la configuration actuelle du projet), et le troisième paramètre est utilisé pour définir les informations de connexion à la base de données actuellement utilisées (laissez-la vide pour prendre les informations de connexion à la base de données de la configuration actuelle du projet), par exemple :
$User = M('db2.User','think_');
signifie instancier la classe de modèle Model et exploiter la table think_user dans la base de données db2.
Si le deuxième paramètre est laissé vide ou n'est pas transmis, cela signifie utiliser le préfixe de la table de données dans la configuration actuelle du projet. Si la table de données en cours d'exploitation n'a pas de préfixe de table, vous pouvez utiliser :
$User = M('db1.User',null);
signifie instancier le modèle. classe de modèle et table utilisateur DB1 opérationnelle dans la base de données.
Si la base de données que vous exploitez nécessite différents comptes d'utilisateurs, vous pouvez transmettre les informations de connexion de la base de données, par exemple :
$User = M('User','think_','mysql://user_a:1234@localhost:3306/thinkphp');
signifie que la classe de modèle de base utilise Model, puis exploitez la table think_user, utilisez le compte user_a pour connectez-vous à la base de données, la base de données d'exploitation est thinkphp.
Le troisième paramètre d'informations de connexion peut utiliser la configuration DSN ou la configuration du tableau, et peut même prendre en charge les paramètres de configuration.
Par exemple, si vous configurez :
'DB_CONFIG'=>'mysql://user_a:1234@localhost:3306/thinkphp';
dans le fichier de configuration du projet, vous pouvez utiliser :
$User = M('User','think_','DB_CONFIG');
Les classes de modèles de base et les bases de données peuvent être utilisées ensemble, par exemple :
$User = M('CommonModel:db2.User','think_');
Si vous souhaitez instancier un modèle hiérarchique, En utilisant la méthode de classe de modèle publique, nous pouvons utiliser :
M('UserLogic:User');
pour instancier UserLogic, bien que cela n'ait pas beaucoup de sens, car la même fonction peut être obtenue avec
D('User','Logic');
.
Apprentissage recommandé : "
tutoriel thinkphpCe 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!