Heim  >  Artikel  >  PHP-Framework  >  Fragen zum PHP-Interview 2018: ThinkPHP

Fragen zum PHP-Interview 2018: ThinkPHP

coldplay.xixi
coldplay.xixinach vorne
2020-08-10 17:18:563975Durchsuche

??

2. Wie versteht man die Einzeleintragsdatei in TP? Fragen zum PHP-Interview 2018: ThinkPHP

Antwort: ThinkPHP verwendet einen einzigen Zugangsmodus für die Projektbereitstellung und den Zugriff. Unabhängig davon, welche Funktion ausgeführt wird, verfügt ein Projekt über einen einheitlichen (aber nicht unbedingt den einzigen) Eingang. Es sollte gesagt werden, dass alle Projekte mit der Eintragsdatei beginnen und die Eintragsdateien aller Projekte ähnlich sind:

  Definieren Sie den Framework-Pfad, den Projektpfad und den Projektnamen (optional)

Definieren Sie den Debugging-Modus Und Konstanten im Zusammenhang mit dem Betriebsmodus (optional)

Laden der Framework-Eintragsdatei (erforderlich)

3. Was ist die MVC-Schichtung in ThinkPHP? (Verstehen)

Antwort: MVC ist eine Methode zur Trennung der logischen Schicht und der Präsentationsschicht einer Anwendung. ThinkPHP basiert ebenfalls auf dem MVC-Entwurfsmuster. MVC ist nur ein abstraktes Konzept und hat keine besonders klaren Vorschriften. Die MVC-Schichtung in ThinkPHP spiegelt sich grob wider in:

Modell (M): Die Definition des Modells wird durch die Model-Klasse vervollständigt. : Controller (C): Anwendungscontroller (Kerncontroller-APP-Klasse) und ACTION-Controller übernehmen beide die Rolle des Controllers. Der Aktionscontroller vervollständigt die Geschäftsprozesssteuerung, während der Anwendungscontroller für die Planungssteuerung verantwortlich ist.

Ansicht (V): Besteht aus Ansichtsklasse und Vorlagendatei. Die Vorlage ist zu 100 % getrennt und kann unabhängig voneinander in der Vorschau angezeigt und erstellt werden.

Tatsächlich ist ThinkPHP jedoch nicht auf M oder V angewiesen, was bedeutet, dass es ohne Modell oder Ansicht funktionieren kann. Es ist nicht einmal auf C angewiesen. Dies liegt daran, dass ThinkPHP zusätzlich zu Action auch über einen Master-Controller verfügt, den App-Controller, der für die Gesamtplanung der Anwendung verantwortlich ist. Fehlt C, muss View V vorhanden sein, andernfalls handelt es sich nicht mehr um eine vollständige Anwendung.

Kurz gesagt: Das MVC-Modell von ThinkPHP bietet lediglich ein Mittel zur agilen Entwicklung, anstatt sich an MVC selbst zu halten.

4. Wie optimiert man SQL?

(Die Schüler können die folgende Erklärung verstehen und dann einfach die allgemeine Bedeutung entsprechend ihrem eigenen Verständnis angeben.)

Antwort: (1) Wählen Sie die richtige Speicher-Engine.

Nehmen Sie MySQL als Beispiel, einschließlich der beiden Speicher-Engines MyISAM und InnoDB. Jeder Motor hat Vor- und Nachteile.

MyISAM eignet sich für Anwendungen, die eine große Anzahl von Abfragen erfordern, ist jedoch für eine große Anzahl von Schreibvorgängen nicht sehr gut. Selbst wenn Sie nur ein Feld aktualisieren müssen, wird die gesamte Tabelle gesperrt und andere Prozesse, auch der Lesevorgang, können nicht ausgeführt werden, bis der Lesevorgang abgeschlossen ist. Darüber hinaus ist MyISAM bei Berechnungen wie SELECT COUNT(*) extrem schnell.

Der Trend von InnoDB wird eine sehr komplexe Speicher-Engine sein, die für einige kleine Anwendungen langsamer sein wird als MyISAM. Es unterstützt jedoch die „Zeilensperre“ und ist daher besser, wenn viele Schreibvorgänge ausgeführt werden. Darüber hinaus werden auch fortgeschrittenere Anwendungen wie Transaktionen unterstützt.段 (2) Der Datentyp optimierter Felder

Denken Sie an ein Prinzip: Je kleiner die Liste, desto schneller. Wenn eine Tabelle nur wenige Spalten hat (z. B. eine Wörterbuchtabelle, eine Konfigurationstabelle), gibt es keinen Grund, INT als Primärschlüssel zu verwenden. Es ist wirtschaftlicher, MEDIUMINT, SMALLINT oder einen kleineren TINYINT zu verwenden. Wenn Sie die Zeit nicht im Auge behalten müssen, ist es viel besser, DATE als DATETIME zu verwenden. Natürlich müssen Sie auch genügend Raum für Erweiterungen lassen.

  (3) Index zum Suchfeld hinzufügen

                                                                                           out out verwenden mit ’’s back to’ s         out out out out out out out out out out out out out out out                                          Wenn es in Ihrer Tabelle ein Feld gibt, das Sie immer für die Suche verwenden, ist es am besten, es zu indizieren, es sei denn, das Feld, das Sie durchsuchen möchten, ist ein großes Textfeld, dann sollten Sie einen Volltextindex erstellen.

(4) Vermeiden Sie die Verwendung von Select *. Je mehr Daten aus der Datenbank gelesen werden, desto langsamer wird die Abfrage. Wenn Ihr Datenbankserver und Ihr WEB-Server außerdem zwei unabhängige Server sind, erhöht dies auch die Belastung durch die Netzwerkübertragung. Auch wenn Sie alle Felder in der Datentabelle abfragen möchten, sollten Sie versuchen, das Platzhalterzeichen * nicht zu verwenden. Eine sinnvolle Nutzung der integrierten Feldausschlussdefinitionen kann hilfreicher sein.

(5) Verwenden Sie ENUM anstelle von VARCHAR

Der ENUM-Typ ist sehr schnell und kompakt. Tatsächlich enthält es einen TINYINT, erscheint jedoch als Zeichenfolge. Auf diese Weise ist es ideal, dieses Feld zum Erstellen einiger Auswahllisten zu verwenden. Wenn beispielsweise die Werte von Feldern wie Geschlecht, ethnische Zugehörigkeit, Abteilung und Status begrenzt und fest sind, sollten Sie ENUM anstelle von VARCHAR verwenden. Punkt (6) Verwenden Sie nicht null

so oft wie möglich, es sei denn, Sie haben einen besonderen Grund, den NULL-Wert zu verwenden. Sie sollten Ihr Feld immer NICHT NULL halten. NULL benötigt tatsächlich zusätzlichen Speicherplatz und Ihr Programm wird komplexer, wenn Sie Vergleiche durchführen. Dies bedeutet natürlich nicht, dass Sie nicht NULL verwenden können. Die Realität ist sehr kompliziert und es wird immer noch Situationen geben, in denen Sie NULL-Werte verwenden müssen.长 (7) Tabellen mit fester Länge sind schneller. Wenn alle Felder in der Tabelle „feste Länge“ haben, wird die gesamte Tabelle als „statisch“ oder „fester Ebene“ betrachtet. Beispielsweise enthält die Tabelle keine Felder der folgenden Typen: VARCHAR, TEXT, BLOB. Solange Sie eines dieser Felder einschließen, ist die Tabelle keine „statische Tabelle fester Länge“ mehr und die MySQL-Engine verarbeitet sie auf andere Weise.

Tabellen mit fester Länge verbessern die Leistung, da MySQL schneller sucht. Da diese festen Längen die Berechnung des Offsets der nächsten Daten erleichtern, erfolgt das Lesen natürlich schneller. Und wenn das Feld keine feste Länge hat, muss das Programm jedes Mal, wenn Sie das nächste finden möchten, den Primärschlüssel finden. Außerdem lassen sich Tabellen mit fester Länge einfacher zwischenspeichern und neu erstellen. Der einzige Nebeneffekt besteht jedoch darin, dass Felder mit fester Länge etwas Platz verschwenden, da Felder mit fester Länge unabhängig davon, ob Sie sie verwenden oder nicht, so viel Platz beanspruchen.

5. Wie ist das Verhalten in ThinkPHP 3.0-Architektur drei (Kern + Verhalten + Treiber) zu verstehen?

Antwort: Kern + Verhalten + Treiber

Die offizielle Abkürzung von TP lautet: CBD Kern: Es ist der Kerncode des Frameworks, eine unverzichtbare Sache. TP selbst ist ein Framework, das auf der Grundlage der MVC-Idee entwickelt wurde. Verhalten: Das Verhalten spielt eine entscheidende Rolle in der Architektur der neuen Version von Thinkphp. Im Kern des Systems sind viele Label-Erweiterungen eingerichtet, und jede Label-Position kann der Reihe nach ausgeführt werden. Auf diese Weise wurden Verhaltenserweiterungen geboren, und viele Systemfunktionen werden auch durch integrierte Verhaltenserweiterungen vervollständigt. Alle Verhaltenserweiterungen sind austauschbar und additiv und bilden somit die Grundlage für den Aufbau des zugrunde liegenden Frameworks.

Treiber: Datenbanktreiber, Cache-Treiber, Tag-Bibliothekstreiber und Template-Engine-Treiber sowie externe Klassenerweiterungen.

Rahmen, also Gerüst. Tatsächlich handelt es sich um ein halbfertiges Produkt einer bestimmten Anwendung, eine Reihe von Komponenten, die Sie auswählen und verwenden können, um Ihr eigenes System zu vervollständigen. Vereinfacht ausgedrückt nutzt man das Bühnenbild anderer und tritt auf. Darüber hinaus handelt es sich bei Frameworks in der Regel um ausgereifte, kontinuierlich aktualisierte Software.

6. Was ist die herkömmliche Konfiguration?

Antwort: Konventionelle Konfiguration Vorherige Seite Nächste Seite Konventionen sind wichtiger als Konfigurationen. Dies ist eine wichtige Idee, die das System über eine integrierte Konventionskonfigurationsdatei (Confconvention.php) hat Für die meisten Anwendungen wird es häufig verwendet. Die Parameter sind standardmäßig konfiguriert. Daher müssen Sie für die Konfigurationsdatei des Anwendungsprojekts häufig nur andere oder neue Konfigurationsparameter als die herkömmliche Konfiguration konfigurieren. Wenn Sie die Standardkonfiguration vollständig übernehmen, müssen Sie nicht einmal eine Konfigurationsdatei definieren.

Die herkömmliche Konfigurationsdatei wird automatisch vom System geladen und muss nicht in das Projekt geladen werden.

7. Was ist SQL-Injection? (Verstehen)

Antwort: Der SQL-Injection-Angriff ist eine der häufigsten Methoden, mit denen Hacker Datenbanken angreifen. Einige Programmierer beurteilen die Rechtmäßigkeit der Benutzereingabedaten beim Schreiben von Code nicht. Der Injektor kann einen Datenbankabfragecode in das Formular eingeben und ihn senden. Das Programm fügt die übermittelten Informationen zusammen, um eine vollständige SQL-Anweisung zu generieren getäuscht. Führen Sie den bösartigen SQL-Befehl aus. Der Injektor ruft erfolgreich einige sensible Daten ab, die auf den vom Programm zurückgegebenen Ergebnissen basieren, und steuert sogar den gesamten Server. Dies ist eine SQL-Injection.

8. Wie verhindert ThinkPHP die SQL-Injection? (Verstehen)

Antwort: (1) Versuchen Sie, Arrays für Abfragebedingungen zu verwenden.

(2) Wenn Zeichenfolgenabfragebedingungen als letzter Ausweg verwendet werden müssen, verwenden Sie den Vorverarbeitungsmechanismus

( 3) Aktivieren Sie die Datenfeldtypüberprüfung und Sie können die Konvertierung numerischer Datentypen erzwingen (die Feldtypüberprüfung ist seit Version 3.1 obligatorisch)

                                                                                                                                                                                  gh zusammen aus ausgelagert.

9. Wie aktiviere ich den Debugging-Modus? Welche Vorteile bietet der Debug-Modus?

Antwort: Das Aktivieren des Debugging-Modus ist sehr einfach. Sie müssen nur eine Zeile Konstantendefinitionscode zur Eintragsdatei hinzufügen:

Nach Abschluss der Entwicklungsphase und der Bereitstellung in der Produktionsumgebung müssen Sie nur noch das Debugging löschen Modusdefinitionscode zum Wechseln in den Bereitstellungsmodus. Nachdem der Debugging-Modus aktiviert wurde, lädt das System zunächst die Standard-Debugging-Konfigurationsdatei des Systems und dann die Debugging-Konfigurationsdatei des Projekts. Die Vorteile des Debugging-Modus sind: Aktivieren Sie die Protokollierung, und alle Fehler- und Debugging-Informationen werden aufgezeichnet Details, um das Debuggen zu erleichtern. Vorlagenänderungen können sofort wirksam werden; Dies hilft Ihnen, Linux-Bereitstellungsprobleme im Voraus zu erkennen. Es kann für verschiedene Phasen des Entwicklungsprozesses, einschließlich Entwicklung, Tests und Demonstration usw., verwendet werden. Unabhängige Projektkonfigurationsdateien können für verschiedene Anwendungsmodi konfiguriert werden.

10. Welche Konfigurationsmodi werden in TP unterstützt? Priorität?

Antwort: ThinkPHP hat seinen eigenen einzigartigen hierarchischen Konfigurationsmodus in der Projektkonfiguration erstellt. Seine Konfigurationsebene spiegelt sich wider in: Konventionelle Konfiguration->Projektkonfiguration->Debug-Konfiguration->Gruppenkonfiguration->Erweiterte Konfiguration-> Dynamische Konfiguration

Das Obige ist die Ladereihenfolge der Konfigurationsdateien. Da die nachfolgende Konfiguration die vorherige Konfiguration mit demselben Namen überschreibt (wenn sie nicht wirksam wird), ist die Priorität von rechts nach links.

11. Was sind die URL-Muster in TP? Welches ist die Standardeinstellung?

Antwort: ThinkPHP unterstützt vier URL-Modi, die durch Festlegen des URL_MODEL-Parameters definiert werden können, einschließlich Normalmodus, PATHINFO, REWRITE und Kompatibilitätsmodus.

Der Standardmodus ist: PATHINFO-Modus, setzen Sie URL_MODEL auf 1

12. Was sind die Systemvariablen in TP? Wie erhalte ich Systemvariablen?

Antwort: So erhalten Sie Systemvariablen:

Rufen Sie einfach die folgende Methode in Aktion auf:

$this->Method name("Variable name",["Filter method"],["Default value"] )

13. Was ist der Unterschied zwischen D-Funktion und M-Funktion im ThinkPHP-Framework?

Antwort: Die M-Methode erfordert nicht, dass der Benutzer beim Instanziieren des Modells eine Modellklasse für jede Datentabelle definiert. Die D-Methode kann die Modellklasse automatisch erkennen instanziiert. Wenn sie nicht vorhanden ist, wird die M-Methode automatisch aufgerufen, um die Modell-Basisklasse zu instanziieren. Gleichzeitig werden instanziierte Modelle nicht wiederholt instanziiert (Einzelfallmodus).

Verwandte Lernempfehlungen:

thinkphp

Das obige ist der detaillierte Inhalt vonFragen zum PHP-Interview 2018: ThinkPHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:wutongketang. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen