Heim >Backend-Entwicklung >PHP-Tutorial >Einführung in Thinkphp 2 (46)
[Keine Operationsverarbeitung]
Sehen Sie sich das folgende Bild an:
Tatsächliche Situation: Unser Benutzercontroller verfügt nicht über die hello()-Methode
Wenn ein Objekt auf eine nicht existierende Methode dieser Klasse zugreift, dann greift es auf die „magische Methode __call()“ zu.
Der Benutzer greift auf eine nicht existierende Operation zu –“ Lösung: Geben Sie jede an Controller Definieren Sie eine _empty()-Methode zur Verarbeitung von
Die zweite Lösung: Definieren Sie eine leere Operation
【 Leeres Modul Verarbeitung】
Wir verwenden eine Klasse, aber diese Klasse wurde noch nicht aufgenommen.
Wir können __autoload() über den automatischen Lademechanismus verarbeiten. Wenn der automatische Lademechanismus diese Klasse nicht findet, wird ein Fehler gemeldet.
ist die Anforderung eines leeren Moduls
Lösung eins: Definieren Sie einen leeren Controller, ein leeres Modul
Lösung zwei:
【Funktionsbibliotheksdateien zur Anwendung hinzufügen】
Im Common-Ordner legen wir hier unsere Funktionsbibliotheksdateien ab
【Modulgruppierung】
1. Der Controller führt Gruppeneinstellungen durch
2. Vorlagen anzeigen müssen gruppiert werden
3. Konfigurationsvariablen müssen gruppiert werden
4. config.php konfigurieren
[Voroperation, Nachoperation]
Wann Wenn die Methode im Controller aufgerufen wird, kann sie vor oder nach dem Aufruf einige zusätzliche Arbeiten ausführen, die als Voroperation und Nachoperation bezeichnet werden
Wenn wir diese URL anfordern: http://URL/index. php/Admin/Goods/zhanshi, wenn die Methode existiert, wo findet diese Aktion statt? In der exec()-Methode von App.class.php
Die Voroperationen inkann zuerst ausgeführt werden, wenn zhanshi() ausgeführt wird. Die Nachoperationen in
können ausgeführt werden, nachdem zhanshi() ausgeführt wird, und dann
. Es gibt viele Methoden in einer Klasse die Vor- und Nachoperationen erfordern. Wie sollen wir dieses Problem lösen?
Lösung:
[Modulübergreifender Aufruf]
Instanziierung einer nicht vorhandenen Klasse wird automatisch über den __autoload()-Mechanismus geladen .
Wo ist __autoload() des tp-Frameworks? In Think.class.php
instanziieren Sie das Controller-Objekt über die A()-Methode
A('Module Controller') Zum Beispiel: A('Goods')
A('group/controller') Zum Beispiel: A('home/Ucenter');
A('project://group/controller') Zum Beispiel: A('shop://home/ Ucenter');
In der A()-Methode gibt es einen verschachtelten Aufruf der import()-Methode. Diese Methode hilft uns, den entsprechenden Controller zu erhalten und dessen Einführung zu erfordern. Die A()-Methode instanziiert das Objekt direkt neu
R ("Projekt://Gruppe/Controller/Operation")-Methode
besteht darin, den Controller einzuführen, das Objekt zu instanziieren und die Methode anzuwenden Anrufe werden alle vererbt.
R('Module Controller/Operation') Zum Beispiel: A('Goods')
R('Group/Controller/Operation') Zum Beispiel: A('home/Ucenter/ member');
R('project://group/controller/operation') Zum Beispiel: A('shop://home/Ucenter/members');
R( )-Methode ruft die A()-Methode auf
A()-Methode ruft die import()-Methode auf
Die A()-Methode verwendet
Die R()-Methode verwendet
Das Obige stellt Erste Schritte mit Thinkphp Teil 2 (46) vor, einschließlich der relevanten Inhalte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.