Heim  >  Artikel  >  PHP-Framework  >  Was ist der Unterschied zwischen d() und m() in ThinkPHP?

Was ist der Unterschied zwischen d() und m() in ThinkPHP?

青灯夜游
青灯夜游Original
2021-03-26 11:58:203032Durchsuche

Unterschied: Die M-Methode wird zum effizienten Instanziieren einer Basismodellklasse verwendet, während die D-Methode zum Instanziieren einer benutzerdefinierten Modellklasse verwendet wird. Die M-Methode muss keine Modellklassendatei erstellen und die M-Methode liest die Modellklasse nicht, während die D-Methode eine Modellklasse erstellen muss.

Was ist der Unterschied zwischen d() und m() in ThinkPHP?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, Thinkphp Version 6, Dell G3-Computer.

Der Unterschied zwischen M-Methode und D-Methode

  • In ThinkPHP werden sowohl die M-Methode als auch die D-Methode zum Instanziieren einer Modellklasse verwendet, die M-Methode wird zum effizienten Instanziieren einer Basismodellklasse verwendet und die D-Methode wird verwendet um eine benutzerdefinierte Modellklasse zu instanziieren.

  • Die M-Methode muss keine Modellklassendatei erstellen, daher ist die automatische Überprüfung standardmäßig ungültig, kann aber durch dynamische Zuweisung erreicht werden, während die D-Methode erstellt werden muss eine Modellklasse.

Verwenden Sie die M-Methode

Wenn die folgende Situation auftritt, ziehen Sie bitte die Verwendung der M-Methode in Betracht:

  • Bei der Durchführung einfacher CURD-Operationen an Datentabellen ohne komplexe Geschäftslogik

  • Wenn nur einzelne Tabellen über eine komplexere Geschäftslogik verfügen, verwenden Sie die M-Methode mit Instanziieren der Die CommonModel-Klasse zur kombinierten Verwendung

M-Methode kann sogar einfach die Operation der Datentabelle entsprechend dem Parametertabellennamen betrachten:

$User = M('User');

Verwenden Sie die D-Methode

Wenn die folgende Situation auftritt, ziehen Sie bitte die Verwendung der D-Methode in Betracht:

  • Sie müssen einige erweiterte Funktionen im ThinkPHP-Modell verwenden, wie z. B. die automatische Überprüfungsfunktion (implementiert in der Methode create()), zugehörige Modelle usw.

  • Geschäftslogik ist relativ komplex und umfasst viele Tabellen

  • Die Geschäftslogik ist in der benutzerdefinierten Modellklasse (im Verzeichnis Lib/Model) definiert, und ich möchte diese Geschäftslogik in den Betrieb implementieren

Darüber hinaus unterstützt die D-Methode keine projektübergreifenden Aufrufe. Sie müssen Folgendes verwenden:

$User = D('User', 'Admin');    // 实例化 Admin 项目下面的 User 模型 
$User = D('Admin.User');        // 启用了项目分组

Tips

Nachdem die Projektgruppierung aktiviert wurde, entspricht die Modellklasse nicht unbedingt der Projektgruppierung. Von mehreren Projektgruppen gemeinsam genutzte Modellklassen werden im Modellverzeichnis abgelegt und können direkt mit D('ModelName') instanziiert werden. Und D('User.UserInfo') bedeutet nicht, dass der Benutzer eine Projektgruppe sein muss, oder es kann sich lediglich um ein Klassifizierungsverzeichnis von Dateien unter Model handeln. D('User.UserInfo') instanziiert das UserInfo-Modell im Benutzerverzeichnis. Art.

Zusammenfassung

Sowohl die M-Methode als auch die D-Methode können direkt verwendet werden, wenn die Modellklassendatei nicht vorhanden ist. Die M-Methode ist jedoch offensichtlich effizienter. Um jedoch die Geschäftslogik in der Modellklasse verwenden zu können, müssen Sie die D-Methode verwenden.

Eine anschaulichere Metapher ist: Methode M ist wie ein Computer, der gerade das Betriebssystem installiert hat und nur einige Grundfunktionen nutzen kann; Methode D ist wie die Installation einiger Anwendungssoftware wie Office und QQ auf dem installierten System , und gleichzeitig läuft der gesamte Computer langsamer.

Verwandte Empfehlungen: Die neuesten 10 Thinkphp-Video-Tutorials

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen d() und m() in ThinkPHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn