------------------------------------- (Code schreiben ist nicht einsam_Xiao Xiaodai)
Ich habe Onthink verwendet, um eine Website zu schreiben, die noch nicht gestartet ist. Sie war nicht so leistungsstark und erweiterbar, wie sie sein sollte.
Es fehlt jedoch noch seine leistungsstarke Datentabellensteuerung. Vor diesem Hintergrund betritt es die Welt der auf Thinphp3.2.2 basierenden Entwicklung. . .
Vervollständigen Sie am ersten Tag das Vorwort, die Grundlagen, die Konfiguration, die Architektur und das Routing des Handbuchs.
Vervollständigen Sie am nächsten Tag die Lektüre des Controller-Modells. Über die Lektüre im Anhang
Das Folgende ist das Leseprotokoll
************************************************** ***** **
use gibt an, welcher Namespace eingeführt wird, um die direkte Referenz zu erleichtern.
Methoden zur Benennung von Methoden verwenden Kleinbuchstaben und Unterstriche.
Funktionen oder Methoden, die mit doppelten Unterstrichen beginnen, werden als magische Methoden verwendet __call
Entwickeln Sie eine gute Angewohnheit, die I-Funktion zu verwenden, um Eingabevariablen zu erhalten
Wenn Sie nach dem Aktualisieren oder Ändern der Umgebung auf Probleme stoßen, besteht das erste Problem darin, die zu löschen Laufzeitverzeichnis;
Konventionelle Konfiguration Anwendungskonfigurationsmoduskonfiguration Debugging-Konfiguration Statuskonfiguration Modulkonfiguration
Konventionelle Konfiguration Die Anwendungskonfiguration ThinkPHP/Conf/convention.php basiert auf der Erweiterung der herkömmlichen Konfiguration
Application/Common/Conf/config .php lädt alle Module, bevor die öffentliche Konfigurationsdatei aufgerufen wird.
Die optionale Moduskonfiguration besteht darin, die Datei config_application name.php im Anwendungskonfigurationsordner hinzuzufügen, um in diesem Modus ausgeführt zu werden.
Wenn der Debug-Modus aktiviert ist, ThinkPHP/Conf/debug.php und Die
Statuskonfiguration unter der Anwendungs-Debugging-Konfigurationsdatei Anwendung besteht darin, die
Modulkonfiguration Anwendung/aktueller Modulname/Conf/config.php
manuell zu trennen und die Konfigurationsdatei zu lesen
Nachdem die Konfigurationsdatei definiert wurde, werden alle einheitlich verwendet. Das System stellt eine C-Methode (Sie können Config verwenden) zum Lesen oder Festlegen bereit.
Konfigurationsparameternamen dürfen keine „.“ und Sonderzeichen enthalten. Die C-Methode kann zweidimensionale
Konfigurationsparameter lesen. Über c konfigurierte Parameterwerte sind derzeit gültig und werden nicht in die Datenbank geschrieben
URL-Details Pfadinfo-Modusbeschreibung
serverName/index.php ( oder andere Anwendungseintragsdateien)/module/controller/operation/[ Parametername/Parameterwert...]
Öffentliche Konfigurationsdatei config.php Öffentliche Funktionsdatei function.php kann den Pfad in common_path laden
Konfigurieren Sie ihn in die Eintragsdatei. Wenn sie definiert ist, muss sie nicht unter „Anwendung laden“ hinzugefügt werden.
3.2.2 Die in der Eintragsdatei geschriebenen Module und Controller können standardmäßig automatisch generiert werden. define('BIND_MODULE','xx') wie
Wenn Sie mehr Controller generieren möchten, BUILD_CONTROLLER_LIST-Konstante
// Binden Sie das Admin-Modul an die aktuelle Eintragsdatei
define('BIND_MODULE','Admin ') ;
define('BUILD_CONTROLLER_LIST','Index,User,Menu');
Rufen Sie die Methode der ThinkBulid-Klasse manuell auf, um die Modellklasse ThinkBuild::buildModel zu generieren 🎜>//Verbotene Zugriffsmodulkonfigurationsliste von verbotene Module (wurden früher von anderen Modulen aufgerufen oder sind nicht für den Zugriff geöffnet). In der Standardkonfiguration verhindert
den Zugriff auf das Common-Modul und das Runtime-Modul (das Runtime-Verzeichnis ist das Standard-Laufzeitverzeichnis). Wir können weitere Listen verbotener Zugriffsmodule:
'MODULE_DENY_LIST' => array('Common','Runtime','Api'),
Zugriffsliste festlegen
Liste zugelassener Zugriffe und das Standardmodul
'MODULE_ALLOW_LIST' => Access MULTI_MODOULE=>false
Design mit mehreren Einträgen
Parameterbindungsmodul akzeptieren
// Binden Sie das Home-Modul an die aktuelle Eintragsdatei $_GET['m'] = 'Home';
define( 'APP_PATH','./Application/');require './ThinkPHP/ThinkPHP.php';
Nach der Bindung wird http://serverName/index.php/Home/Index/index ://serverName/home.php/Index/index (die URL zeigt Home nach der Bindung nicht an)
URL unterscheidet zwischen Groß- und Kleinschreibung. URL_CASE_INSENSITIVE=>true
Modellschicht Datenschicht, Logikschicht, Serviceschicht usw . Modellebene: Beim Erstellen von Model, Logic, Sercive
ist es sehr praktisch, die D-Methode zum Aufrufen von D('User','Logic') zu verwenden. //instanziieren UserLogic D('User') dient zum Instanziieren
UserModel .
Ändern Sie die standardmäßige Ansichtsebene des Systems. DEFAULT_V_LAYER=>'Mobile'; Verwenden Sie die T-Funktion
, um die Vorlage für das nicht standardmäßige Ansichtsebenenverzeichnis abzurufen.
Der Kerncontroller der Controller-Ebene wird in der App-Klasse innerhalb des Systems vervollständigt.
Event/UserEvent//Wird für Benutzerereignisantwortvorgänge verwendet. Der Controller ist für externe Ereignisse verantwortlich.
Antwort und kann A('Benutzer','Ereignis') nur intern aufrufen. In Bezug auf das Architekturdesign wird das Treiberdesign weiter gestärkt, wodurch die vorherigen Engine- und Moduserweiterungen ersetzt und das Verhaltensdesign verbessert werden
Das Design macht das Gesamtframework flexibler, und da die treiberbasierte Designidee in den Funktionsklassenbibliotheken übernommen wird, die Daten schreiben müssen,
kann das neue Framework problemlos die Anforderungen der verteilten Bereitstellung erfüllen und hat einen starken Einfluss auf Die Cloud-Plattform kann einfacher implementiert werden.
Verhalten
Verhalten ist ein relativ abstraktes Konzept und Verhaltensweisen treten an verschiedenen Orten auf.
Einige Verhaltensweisen finden vor der Ausführung der Anwendung statt, andere nach der Ausgabe der Vorlage. Wir verwenden die Position dieser Verhaltensweisen als Tags (Bits), die auch als Hooks verwendet werden können. werden abgefangen und relevante
Verhaltensweisen werden einheitlich ausgeführt, ähnlich dem Konzept des „Aspekts“ in der AOP-Programmierung. Das Binden verwandter Verhaltensweisen an ein bestimmtes Tag wird zu einer AOP-ähnlichen Programmieridee
.
Tag-Bit
Die Tag-Funktion wird zum Setzen eines bestimmten Tag-Bits verwendet. Sie kann übergeben werden und akzeptiert nur einen Parameter. Wenn Sie mehrere Parameter übergeben müssen,
verwenden Sie bitte ein Array, ThinkHook: :listen('my_tag' );
Die Verhaltensdefinition muss die Ausführungseintrittsmethode definieren. Wohin kehrt der Aufruf aufgrund des Einflusses des Aufrufmechanismus des Verhaltens zurück?
Verhaltensbindung Nachdem das Verhalten definiert wurde, muss es mit einer bestimmten Bezeichnung definiert werden, damit es wirksam wird, andernfalls wird es nicht ausgeführt. Das Verhalten und der Tag-Speicherort müssen in der Datei „tags.php“ der Verhaltensdefinitionsdatei der Anwendung
definiert werden.
return array( 'Tag name 1'=>array('behavior name 1','behavior name 2',...), 'Tag name'
2'=>array('behavior name 1 ','Verhaltensname 2',...), );
Für Version 3.2.1 oder höher ist es zulässig, die entsprechende Klassenbibliothek so einzustellen, dass sie den Namespace nicht verwendet.
Konfigurationsdatei 'APP_USE_NAMESPACE' => false (immer noch erforderlich beim Erben und Aufrufen von Systemklassen)
Instanziieren Sie in Version 3.2 die integrierte Klassenbibliothek von PHP oder Klassen von Drittanbietern, die nicht mithilfe von Namespaces definiert sind.
$class = new stdClass(); $sxml = new SimpleXmlElement($xmlstr);
Automatisches Laden (automatisches Laden des Namespace) Die Namespaces im Bibliotheksverzeichnis können automatisch identifiziert und lokalisiert werden.
Zusätzlich zum Namespace im Bibliotheksverzeichnis können wir auch andere Namespaces definieren
autoload_namespace
Verbessern Sie die Effizienz, indem Sie mehrere Root-Namespaces mit der Klassenbibliothek ThinkThink::addMap($map=array) zuordnen ();
Importieren Sie mithilfe der Importmethode manuell Klassenbibliotheken von Drittanbietern, um beliebige Klassenbibliotheken zu importieren.
Eingebauter Caching-Mechanismus und Ausführen von Lite-Dateien: Generieren Sie statische Eintragsdateien zur Laufzeit.
Anwendungsmodus Im Anwendungsmodus wird ein automatischer Erkennungsbereich hinzugefügt
Projektkompilierungs-Anwendungskompilierungs-Cache (Cache für die erste Ausführung) – Lite-Datei ausführen (Eintrag statisch)
------------ -==========
Routendefinition
URL ist nicht im normalen Modus. Um das Routing zu aktivieren, können Sie das Routing in der Anwendungs- (oder Modul-)Konfigurationsdatei
// aktivieren zum Routing 'URL_ROUTER_ON' =>true, 3.2 Routing gilt für Module, daher können Modulnamen nicht geroutet werden. Die Definition des Routings
befindet sich normalerweise auch in der Modulkonfigurationsdatei.
Routing-Ausdruck => Routing-Adresse und eingehende Parameter-Array('Routing-Ausdruck','Routing-Adresse','Eingehende Parameter
Nummer')
Routing-Ausdruck
Regulärer Ausdruck/ ^blog/(d ) $/
Regulärer Ausdruck blog/:id
Genaue Übereinstimmung $
Öffentliche Methode
-------
Controller
Wenn die zu bedienende Methode a ist Controller-Methode, die mit den Schlüsselwörtern des Systems in Konflikt steht, können wir das Methodensuffix
festlegen, um „ACTION_SUFFIX“ => „Aktion“ zu lösen, // Operationsmethodensuffix
Mehrebenensteuerung Der Controller soll die Controller gruppieren
. Wenn der instanziierte Controller intern ist, wird er automatisch instanziiert und aufgerufen, wenn die URL-Adressauflösung verwendet wird. Wenn er über mehrere Controller hinweg aufgerufen wird, wird er instanziiert und dann die Verknüpfungsmethode A verwendet mehrstufig, verwenden Sie den zweiten Parameter von A). -Methode. Wenn die Pre-Post-Methode nicht definiert ist, ist die eigentliche Modulausgabe möglicherweise nur die aktuelle Operation. Im Allgemeinen haben die Pre- und Post-Operationen keine Ausgabe. Wenn die Fehleroperation
erfolgreich aufgerufen wird, erfolgt keine Nachoperation.
Der Controller kann auch Parameterregeln und Aktionsparameter binden (Variablennamen können gebunden werden, um Routing-Funktionen zu implementieren)
Pseudostatisch
URL_HTML_SUFFIX=>'' Das statische Suffix wird in der Konstante __EXT__ aufgezeichnet (Sie können das aktuelle Suffix erhalten)
URL_DENY_SUFFIX=> Mehrere Suffixe, auf die nicht zugegriffen werden darf, werden durch
getrenntDie Priorität unten ist höher als oben
URL case 'URL_CASE_INSENSITIVE' =>true Wenn beim Zugriff auf den Controller die Groß-/Kleinschreibung nicht beachtet wird, schreiben Sie ihn mit _ groß.
Das System stellt die U-Methode bereit, um automatisch relevante URLs für Ihre Adresse zu generieren
U Ähnlich (Weiterleitung) (URL-Generierung)
Um den verwendeten URL-Modus anzupassen, müssen wir in der Lage sein, die entsprechende URL-Adresse basierend auf den aktuellen URL-Einstellungen dynamisch zu generieren,
ThinkPHP Bietet eine integrierte U-Methode zur dynamischen Generierung von URLs, wodurch sichergestellt werden kann, dass das Projekt während des Transplantationsprozesses nicht durch die Umgebung beeinträchtigt wird.
U('Adressausdruck',['Parameter'],['Pseudostatisches Suffix'],['Anzeige des Domänennamens'])
[Modul/Controller/Operation#anchor@domänenname]?Parameter 1=Wert 1&Parameter 2=Wert 2...
ajax gibt ajaxReturn zurück
Die vom Variablenarray zurückgegebenen Daten können als JSON, JSONP, XML und EVAL konfiguriert werden.
Die Methode gibt DEFAULT_AJAX_RETURN zurück return eval kann $data-Daten ausgeben
Obwohl es zwischen JSON und JSONP nur einen Buchstabenunterschied gibt, sind sie eigentlich überhaupt nicht dasselbe: JSON ist ein Datenaustauschformat, während JSONP ein inoffizielles domänenübergreifendes Datenaustauschprotokoll ist . Zum einen geht es um die Beschreibung des Formats der Informationen, zum anderen um die
vereinbarte Methode zur Informationsübermittlung.
Springen und umleiten
$this->success(prompt information, address, seconds)
----==--=-=
Eingabevariable
Sie können die I-Funktion übergeben Führt Variablenerfassung und Filterung durch
I('Variablentyp.Variablenname',['Standardwert'],['Filtermethode'],['Zusätzliche Datenquelle'])
I-Funktion kommt mit Mit DEFAULT_FILTER, Der Standardwert ist htmlspecialchars (Variablenfilterung).
Bestimmen Sie den Anforderungstyp (Anfragetyp)
is_XXX. Wenn es sich um ein benutzerdefiniertes AJAX handelt, müssen Sie ein ausgeblendetes Feld hinzufügen, um dem Hintergrund mitzuteilen, dass es von Ajax übermittelt wurde es ist jquery
Es ist nicht notwendig. Kann über VAR_AJAX_SUBMI konfiguriert werden
Leerer Vorgang
_empty automatisch aufrufen (Fehlerseite und einige URL-Optimierung implementieren)
Das leere Controllersystem versucht, den EmptyController
Vorgang an die Klasse ACTION_BIND_CLASS=>'true' zu binden Um die Klassifizierung detaillierter zu gestalten, können
Vor- und Nachoperationen nicht weggelassen werden
-=-=-=-=-=-= -=-
Modell. _Konvertierung in Groß- und Kleinschreibung
Die direkte Instanziierung der Modellklasse erbt im Allgemeinen die Präfixnummer der Modellnamensdatentabelle
Wenn Sie Wenn Sie nativen SQL-Code schreiben möchten, müssen Sie ihn nur leer instanziieren. Genau wie M();
D (Instanziierungsoperation des Datenmodells)
Der Parameter der Methode ist der Name des Modells und stimmt mit überein die Falldefinition der Modellklasse.
Wenn die Klasse nicht vorhanden ist, versucht die D-Funktion, die folgenden öffentlichen Module zu instanziieren, und kann auch modulübergreifend verwendet werden
M (führen Sie einfach grundlegende CURD-Operationen an den Daten durch Tabelle) muss keine bestimmten Modellklassen laden, daher ist die Leistung höher.
Nicht unterstützt. Eigene Geschäftslogik.
Wir verwenden häufig die D-Methode und die M-Methode während des Instanziierungsprozesses Die M-Methode instanziiert das Modell
, ohne dass der Benutzer eine Modellklasse für jede Datentabelle definiert. Wenn die D-Methode die definierte Modellklasse nicht findet, verwendet sie automatisch die M-Methode
.
Der Feldcache schließt die Feldinformationen im Feld ein, indem Sie DB_FIELDS_CACHE festlegen. Fügen Sie dieses Feld in der Projektkonfigurationsdatei
hinzu. Rufen Sie alle Feldinformationen der Datentabelle getDbFields ab (); field(''/ *); Alle aufzurufenden Felder
(true) abrufen.
Verwenden Sie table(), um Datentabellen zu wechseln. Sie können der Verbindung eine Beschriftung hinzufügen
Systemstandardregeln, Sie müssen das Modell verwenden, um Operationen auszuführen, Abfrage-Leseoperationen zu schreiben.
Kohärente Operationen (Kettenoperationen)
Wo kann in Verbindung mit Wo verwendet werden
Datenmethode wird für die Datenbank geschrieben und kann auch zum Aktualisieren (Speichern) verwendet werden, um festzustellen, ob ein Primärschlüsselobjekt oder eine Anzahl
Gruppen, Objekte und Zeichenfolgen vorhanden ist. Lesevorgänge sind möglich. Die Feldausschlüsse file(array('user_id','content'),true); sind andere Felder als user_id und
content. Wird zum Schreiben verwendet (Sicherheitskontrolle) und erlaubt kein anderes Schreiben. $model->field('name')-
>create(); bedeutet, dass die einzigen zulässigen Felder im Formular das Namensfeld sind, unabhängig davon der Benutzer Auf welche Weise haben Sie einen Browser geändert oder hinzugefügt?
Die Eingabefelder werden direkt gesperrt. Da wir nicht möchten, dass alle anderen Felder durch die Übermittlung durch den Benutzer ermittelt werden, können Sie über die Autovervollständigungsfunktion
zusätzliche zu schreibende Felder definieren.
filtert (Filtern von Feldinhalten) ähnelt meiner Meinung nach etwas $User->data($data)->filter
('strip_tags')->add(); filtert HTML-Tags heraus ( Unterstützt Die Funktion vom Typ Rückruf kann eine Funktion oder ein Abschluss sein
Definition)
Die Methode „Having“ besteht darin, mit der Methode „Group“ zusammenzuarbeiten, um die gruppierten Ergebnisse erneut abzufragen.
Cache s
Kommentar Kommentar
Das von der Create-Methode erstellte Datenobjekt wird im Speicher gespeichert und erst dann tatsächlich in die Datenbank geschrieben, wenn die Methode add
oder save verwendet wird. Es wird nach dem Hinzufügen oder Speichern in die Datenbank geschrieben, sodass Sie
das erstellte Objekt ändern können, bevor es eine Änderung gibt----
suchen (ein Feld lesen) auswählen (ein lesen). field) Set) getField (Feldwert lesen) [Aktualisierung der Zahlen setInc setDec]
delete() [Es wird nicht gelöscht, wenn keine Bedingungen übergeben werden, ähnlich wie bei seve]
Formularzuordnungsdatenerfassung Wenn die automatische Verarbeitungseinstellung ist aktiviert. 'READ_DATA_MAP'=>true
Sie können auch parseFieldsMap für die Formatkonvertierung verwenden
Abfragemethode
Array '_logic'='OR' Verwenden Sie den Objektmodus, um stdClass
$map abzufragen ['b'] =array('notlike',array('%thinkphp%','%tp'),'AND');
exp-Ausdrucksabfrage (exp-Abfragebedingungen werden nicht als Zeichenfolgen behandelt) Alle nachfolgenden Abfragebedingungen können jede von
SQL unterstützte Syntax verwenden, einschließlich der Verwendung von Funktionen und Feldnamen. Abfrageausdrücke können nicht nur für Abfragebedingungen, sondern auch für Zahlen verwendet werden.
Aktualisiert.
$data['score'] = array('exp','score 1');//Füge 1 zu den Punkten des Benutzers hinzu
$User->where('id=5')-> save ($data); // Geänderte Daten gemäß den Bedingungen speichern
Mehrsprachige Paketunterstützung L
*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_* _* _*_12_1
Mehrstufiger Controller
Instanzcontroller
eindeutiges
(Token-Verifizierungs-)Token
ORM-Tabellenzuordnung zu Klassendatensatzzuordnung zu Objekt
AR-Modus ActiveRecord Ein einfacher Befehl
Anleitung Aktivieren Sie die lokale Sitzungsverwaltungsunterstützung mit Präfix
*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_* _* _*_12_1
Das Obige stellt den Onthink-Lernaufsatz vor, einschließlich der relevanten Inhalte. Ich hoffe, er wird für Freunde hilfreich sein, die sich für PHP-Tutorials interessieren.