Fragen und Antworten zu PHP-Interviews, aktualisiert am 3. Juni 2018, einschließlich PHP-Basisteil, Datenbankteil, objektorientiertem Teil, ThinkPHP-Teil, Smarty-Template-Engine, sekundärem Entwicklungssystem (DEDE, ecshop), Entwicklung der öffentlichen WeChat-Plattform und mehreren PHP-Interviewfragen einschließlich Beschreibung der Technologie, die Sie beherrschen.
1. Einer der Hauptvorteile der PHP-Sprache ist plattformübergreifend.
Die optimale Kombination der PHP-Laufumgebung ist Apache+MySQL+PHP. Diese Laufumgebung kann auf verschiedenen Betriebssystemen (wie Windows, Linux usw.) konfiguriert werden und ist daher nicht durch das Betriebssystem eingeschränkt es heißt plattformübergreifend
2. Wie viele Methoden gibt es für die Datenübermittlung in der WEB-Entwicklung? Was ist der Unterschied? Welche Methode verwendet Baidu?
Get und Post auf zwei Arten
Unterschiede:
1. Get ruft Daten vom Server ab und Post überträgt Daten an den Server
2. Der von Get übergebene Wert ist in der URL sichtbar , und der Beitrag befindet sich in der URL Unsichtbar
3. Der von Get übergebene Wert liegt im Allgemeinen innerhalb von 2 KB, und die Größe des von Post übergebenen Werts kann in php.ini festgelegt werden
4. Get weist keine geringe Sicherheit auf , und Post ist sicherer, aber seine Ausführungseffizienz ist höher als Post.
Empfehlungen:
1 Die Get-Methode ist weniger sicher als die Post-Methode. Es wird empfohlen, die Post-Datenübermittlungsmethode zu verwenden Informationen;
Es wird empfohlen, die Get-Methode für die Datenabfrage zu verwenden. Es wird empfohlen, die von Baidu verwendete Get-Methode zu verwenden aus der URL ersichtlich
Template-Engine: Es gibt auch viele, die in den Lehrbüchern enthalten sind usw.), Empire System, DEDE (Dreamweaver), Ecshop usw. Was wir gelernt haben, ist DEDECMS, Ecshop
4. Welche Web-Front-End-Technologien beherrschen Sie?
Kompetent im DIV+CSS-Webseitenlayout, JavaScript, jQuery-Framework, Photoshop-Bildverarbeitung
Was sind die Vorteile von AJAX?
Ajax ist eine asynchrone Übertragungstechnologie, die über Javascript oder das JQuery-Framework implementiert werden kann, um eine teilweise Aktualisierung zu erreichen, wodurch der Druck auf den Server verringert und die Benutzererfahrung verbessert wird
6. One-to -Eins Sicherheit Es ist sehr wichtig für eine Reihe von Programmen. Bitte sagen Sie mir, auf welche Sicherheitsmechanismen bei der Entwicklung geachtet werden sollte.
①Verhindern Sie die Remote-Übermittlung; ②Verhindern Sie die SQL-Injection und filtern Sie spezielle Codes; ③Verhindern Sie die Überflutung der Registrierungsmaschine;
7. Wie kann die Leistung des Programms verbessert werden? Operative Effizienz?
① Optimieren Sie SQL-Anweisungen. Versuchen Sie, in Abfrageanweisungen kein Select * zu verwenden. Verwenden Sie zum Überprüfen, welches Feld weniger Unterabfragen verwendet und durch Tabellenverbindungen ersetzt werden kann. ② Erstellen Sie Indizes in Daten Tabellen; ③ Richtig: Cache für häufig im Programm verwendete Daten erstellen;
8. Kann PHP mit anderen Datenbanken verwendet werden?
PHP ist die beste Kombination mit MYSQL-Datenbank. Natürlich kann PHP auch mit anderen Datenbanken, wie MSSQL usw., verwendet werden. PHP verfügt über reservierte Funktionen für den Betrieb von MSSQL, die solange verwendet werden können aktiviert
9. Was sind die Vorteile von MVC?
Die drei Schichten von MVC beziehen sich auf: Geschäftsmodell, Ansicht und Controller. Die Controller-Schicht ruft das Modell auf, um die Daten zu verarbeiten, und ordnet die Daten dann zur Anzeige der Ansichtsschicht zu. ① Es kann die Wiederverwendbarkeit von Code erreichen, Code-Redundanz vermeiden; ②M und V implementieren Code-Trennung, sodass dasselbe Programm unterschiedliche Ausdrücke verwenden kann
10 Verständnis des JSON-Datenformats?
JSON (JavaScript Object Notation) ist ein leichtes Datenaustauschformat. Das JSON-Datenformat ist fest und kann für die Datenübertragung in mehreren Sprachen verwendet werden.
Die Funktion in PHP, die das JSON-Format verarbeitet, ist json_decode (. string $json [, bool $assoc]), akzeptiert einen JSON-Format-String und konvertiert ihn in eine PHP-Variable. Der Parameter json ist der zu dekodierende JSON-String-Format-String. assoc gibt ein Array anstelle eines Objekts zurück, wenn dieser Parameter TRUE ist.Json_encode: Konvertieren Sie PHP-Variablen in das JSON-Format.
① Sowohl echo als auch print können eine Ausgabe durchführen. Der Unterschied besteht darin, dass echo keine Funktion ist und keinen Rückgabewert hat, während print eine Funktion mit einem Rückgabewert ist, sodass es relativ gesehen schneller ist Ausgabe echo, während print_r Wird normalerweise zum Drucken von Informationen über Variablen verwendet und häufig beim Debuggen verwendet.
③ print_r zum Drucken eines zusammengesetzten Typs wie eines Array-Objekts
12. Was ist der Unterschied zwischen SESSION und COOKIE?
①Speicherort: Sitzung wird auf dem Server gespeichert, Cookie wird im Browser gespeichert
②Sicherheit: Sitzungssicherheit ist höher als Cookie
③Sitzung ist ein „Sitzungsdienst“, und der Dienst muss es sein aktiviert, wenn Sie es verwenden. Cookies müssen nicht aktiviert werden, Sie können es direkt verwenden
13. Was sind die allgemeinen Funktionen für die Verarbeitung von Arrays in PHP? (Konzentrieren Sie sich auf die „Parameter“ und den „Rückgabewert“ der Funktion)
①array() erstellt ein Array; ②count() gibt die Anzahl der Elemente im Array zurück; ③array_push() fügt ein oder mehrere Elemente ein das Ende des Arrays (Schieben auf den Stapel); ④array_combine() gibt den Wert einer einzelnen Spalte im Eingabearray zurück; ⑥array_reverse() gibt das Array in umgekehrter Reihenfolge zurück; () entfernt Duplikate im Array-Wert; ⑧in_array() prüft, ob der angegebene Wert im Array vorhanden ist; 14. (Konzentrieren Sie sich auf die „Parameter“ und den „Rückgabewert“ der Funktion)
①trim() entfernt Leerzeichen und andere Zeichen auf beiden Seiten der Zeichenfolge;
②substr_replace() ersetzt einen Teil der Zeichenfolge durch ein weiterer A-String;③substr_count() zählt, wie oft ein Teilstring im String vorkommt;
⑤strtolower() wandelt den String in Kleinbuchstaben um; > ⑥strtoupper() konvertiert die Zeichenfolge in Großbuchstaben;
⑧strrchr() findet das letzte Vorkommen einer Zeichenfolge in einer anderen Zeichenfolge; Vorkommen einer Zeichenfolge in einer anderen Zeichenfolge (Groß- und Kleinschreibung beachten); strlen() gibt die Länge der Zeichenfolge zurück; print() gibt ein oder aus Weitere Zeichenfolgen; Explodieren () bricht die Zeichenfolge in ein Array auf; is_string() erkennt, ob die Variable eine Zeichenfolge ist; mb_substr ()Funktion zum Abfangen von Chinesisch und Englisch 15. Welche allgemeinen Funktionen werden zur Zeitverarbeitung in PHP verwendet? (Konzentrieren Sie sich auf die „Parameter“ und den „Rückgabewert“ der Funktion)
date_default_timezone_get() gibt die Standardzeitzone zurück.
date_default_timezone_set() legt die Standardzeitzone fest.
date() formatiert die lokale Uhrzeit/das lokale Datum.
getdate() gibt Datums-/Uhrzeitinformationen zurück.
gettimeofday() gibt die aktuelle Zeitinformation zurück.
mktime() gibt den Unix-Zeitstempel eines Datums zurück.
strtotime() analysiert jede Datums- oder Zeitbeschreibung in englischem Text in einen Unix-Zeitstempel.time() gibt den Unix-Zeitstempel der aktuellen Zeit zurück.
16. Was sind die gemeinsamen Funktionen von PHP für die Datenbankverarbeitung? (Konzentrieren Sie sich auf die „Parameter“ und den „Rückgabewert“ der Funktion)
Bitte lesen Sie das PHP-Handbuch sorgfältig durch.
Was sind die häufigsten Funktionen von PHP zum Betreiben von Dateien verwendet? (Konzentrieren Sie sich auf die „Parameter“ und den „Rückgabewert“ der Funktion) ②Datei löschen; ④Datei ändern; ⑦Datei erstellen; . usw. Dieses Element wird häufig zum Generieren von Cache- oder statischen Dateien bei der Arbeit verwendet. Bitte lesen Sie sich das PHP-Handbuch sorgfältig durch. 18. Was sind die allgemeinen Funktionen von PHP-Betriebsverzeichnissen? )? (Konzentrieren Sie sich auf die „Parameter“ und den „Rückgabewert“ der Funktion)
①Öffnen Sie das Verzeichnis; ④Erstellen Sie das Verzeichnis; ⑥Schließen Sie das Verzeichnis usw ist sehr wichtig, bei der Arbeit erstellen oder löschen Sie häufig Verzeichnisse für hochgeladene Dateien und erstellen oder löschen Verzeichnisse für Caches und statische Seiten. Bitte lesen Sie das PHP-Handbuch sorgfältig durch
2: Datenbankteil
Zurück nach oben
1. Was sind die gängigen relationalen Datenbankverwaltungssysteme?
Antwort: Oracle, SQL Server, MySQL, Sybase, DB2, Access usw.
2. Welche Teile umfasst die SQL-Sprache? Was sind die Aktionsschlüsselwörter für jeden Abschnitt?
Antwort: Die SQL-Sprache besteht aus vier Teilen: Datendefinition (DDL), Datenmanipulation (DML), Datenkontrolle (DCL) und Datenabfrage (DQL).
Datendefinition: Tabelle erstellen, Tabelle ändern, Tabelle löschen, Index erstellen/löschen usw.Datenmanipulation: Auswählen, Einfügen, Aktualisieren, Löschen,
Datenkontrolle: gewähren, widerrufenDatenabfrage : Wählen Sie
3. Was beinhalten Integritätsbeschränkungen?
Antwort: Datenintegrität bezieht sich auf die Genauigkeit und Zuverlässigkeit von Daten.
ist in die folgenden vier Kategorien unterteilt:1) Entitätsintegrität: legt fest, dass jede Zeile der Tabelle eine eindeutige Entität in der Tabelle ist.
2) Domänenintegrität: Dies bedeutet, dass die Spalten in der Tabelle bestimmte Datentypbeschränkungen erfüllen müssen, darunter Wertebereich, Genauigkeit und andere Vorschriften.3) Referenzielle Integrität: bedeutet, dass die Daten des Primärschlüssels und des Fremdschlüssels der beiden Tabellen konsistent sein sollten, um die Konsistenz der Daten zwischen den Tabellen sicherzustellen und Datenverlust oder bedeutungslose Daten in der Datenbankdiffusion zu verhindern.
4) Benutzerdefinierte Integrität: Verschiedene relationale Datenbanksysteme erfordern je nach Anwendungsumgebung häufig einige besondere Einschränkungen. Benutzerdefinierte Integrität ist eine Einschränkung für eine bestimmte relationale Datenbank, die die semantischen Anforderungen widerspiegelt, die eine bestimmte Anwendung erfüllen muss.
Tabellenbezogene Einschränkungen: einschließlich Spalteneinschränkungen (NOT NULL (Nicht-Null-Einschränkung)) und Tabelleneinschränkungen (PRIMARY KEY, Fremdschlüssel, Prüfung, UNIQUE).
4. Was ist eine Transaktion? und seine Eigenschaften?
Antwort: Transaktion: Es handelt sich um eine Reihe von Datenbankoperationen und die grundlegende logische Einheit der Datenbankanwendung.
Transaktionsmerkmale:
(1) Atomarität: Das heißt, Unteilbarkeit: Entweder werden alle Transaktionen ausgeführt oder keine.
(2) Konsistenz oder Stringability. Die Ausführung einer Transaktion wandelt die Datenbank von einem korrekten Zustand in einen anderen korrekten Zustand um
(3) Isolation. Bevor die Transaktion ordnungsgemäß festgeschrieben wird, dürfen Änderungen der Daten durch die Transaktion keiner anderen Transaktion zur Verfügung gestellt werden,
(4) Haltbarkeit. Nachdem eine Transaktion korrekt übermittelt wurde, werden ihre Ergebnisse dauerhaft in der Datenbank gespeichert. Auch wenn nach der Übermittlung der Transaktion weitere Fehler auftreten, werden die Verarbeitungsergebnisse der Transaktion gespeichert.
Oder verstehen Sie es so:
Eine Transaktion ist eine Gruppe von SQL-Anweisungen, die als logische Arbeitseinheit miteinander verbunden sind. Wenn eine Anweisungsoperation fehlschlägt, schlägt die gesamte Operation fehl und zukünftige Operationen werden zurückgesetzt in den Zustand vor der Operation versetzt, oder es befindet sich ein Knoten darauf. Um sicherzustellen, dass etwas entweder ausgeführt oder nicht ausgeführt wird, können Transaktionen verwendet werden. Damit eine gruppierte Anweisung als Transaktion betrachtet werden kann, muss sie die ACID-Tests bestehen, nämlich Atomizität, Konsistenz, Isolation und Haltbarkeit.
5. Was ist ein Schloss?
Antwort: Die Datenbank ist eine gemeinsame Ressource, die von mehreren Benutzern verwendet wird. Wenn mehrere Benutzer gleichzeitig auf Daten zugreifen, greifen mehrere Transaktionen gleichzeitig auf dieselben Daten in der Datenbank zu. Wenn gleichzeitige Vorgänge nicht kontrolliert werden, können falsche Daten gelesen und gespeichert werden, wodurch die Konsistenz der Datenbank zerstört wird.
Sperren ist eine sehr wichtige Technologie, um die Kontrolle der Datenbank-Parallelität zu erreichen. Bevor eine Transaktion ein Datenobjekt bearbeitet, sendet sie zunächst eine Anfrage an das System, um es zu sperren. Nach der Sperrung hat die Transaktion eine gewisse Kontrolle über das Datenobjekt. Bevor die Transaktion die Sperre aufhebt, können andere Transaktionen das Datenobjekt nicht aktualisieren.
Grundlegende Sperrtypen: Sperren umfassen Sperren auf Zeilenebene und Sperren auf Tabellenebene
6. Was ist eine Ansicht? Was ist ein Cursor?
Antwort: Eine Ansicht ist eine virtuelle Tabelle, die dieselben Funktionen wie eine physische Tabelle hat. Ansichten können hinzugefügt, geändert, überprüft und bearbeitet werden. Eine Ansicht ist normalerweise eine Teilmenge von Zeilen oder Spalten einer oder mehrerer Tabellen. Änderungen an der Ansicht wirken sich nicht auf die zugrunde liegenden Tabellen aus. Dadurch ist es für uns einfacher, Daten abzurufen als bei Abfragen mit mehreren Tabellen.
Cursor: Er verarbeitet die Abfrageergebnismenge effektiv als Einheit. Der Cursor kann auf einer bestimmten Zeile in der Zelle positioniert werden, um eine oder mehrere Zeilen aus der aktuellen Zeile im Ergebnissatz abzurufen. Sie können Änderungen an der aktuellen Zeile des Ergebnissatzes vornehmen. Cursor werden im Allgemeinen nicht verwendet, aber wenn Daten einzeln verarbeitet werden müssen, sind Cursor sehr wichtig.
7. Was ist eine gespeicherte Prozedur? Wie soll ich anrufen?
Antwort: Eine gespeicherte Prozedur ist eine vorkompilierte SQL-Anweisung. Der Vorteil besteht darin, dass sie einen modularen Aufbau ermöglicht, was bedeutet, dass sie nur einmal erstellt werden muss und später im Programm mehrmals aufgerufen werden kann. Wenn eine bestimmte Operation mehrere SQL-Ausführungen erfordert, ist die Verwendung gespeicherter Prozeduren schneller als die Ausführung einfacher SQL-Anweisungen. Gespeicherte Prozeduren können über ein Befehlsobjekt aufgerufen werden.
8. Welche Rolle spielt der Index? Und welche Vor- und Nachteile hat es?
Antwort: Ein Index ist eine spezielle Abfragetabelle, die die Datenbanksuchmaschine verwenden kann, um den Datenabruf zu beschleunigen. Es ist dem Inhaltsverzeichnis eines Buches im wirklichen Leben sehr ähnlich. Sie können die gewünschten Daten finden, ohne das gesamte Buch abzufragen. Indizes können eindeutig sein. Wenn Sie einen Index erstellen, können Sie eine einzelne Spalte oder mehrere Spalten angeben. Der Nachteil besteht darin, dass die Dateneingabe verlangsamt und die Datenbank vergrößert wird.
9. Wie kann man die drei Paradigmen auf populäre Weise verstehen?
Antwort: Erste Normalform: 1NF ist eine Atomizitätsbeschränkung für Attribute, die erfordert, dass Attribute atomar sind und nicht zerlegt werden können;
Zweite Normalform: 2NF ist eine Eindeutigkeitsbeschränkung für Datensätze, die erfordert, dass Datensätze atomar sind und nicht zerlegt werden können haben Eindeutige Identifikation, das heißt die Einzigartigkeit der Entität; Dritte Normalform: 3NF ist eine Einschränkung der Feldredundanz, das heißt, jedes Feld kann nicht von anderen Feldern abgeleitet werden und erfordert, dass die Felder nicht redundant sind. .
10. Was ist eine Basistabelle? Was ist eine Ansicht?
Antwort: Die Basistabelle ist eine Tabelle, die unabhängig existiert. In SQL entspricht eine Beziehung einer Tabelle. Eine Ansicht ist eine Tabelle, die aus einer oder mehreren Basistabellen abgeleitet ist. Der View selbst wird nicht eigenständig in der Datenbank gespeichert, sondern ist eine virtuelle Tabelle
11. Beschreiben Sie die Vorteile von Views?
Antwort: (1) Ansichten können Benutzervorgänge vereinfachen. (2) Ansichten ermöglichen es Benutzern, dieselben Daten aus mehreren Perspektiven anzuzeigen. (3) Ansichten bieten ein gewisses Maß an logischer Unabhängigkeit für die Datenbank Bietet Sicherheitsschutz für vertrauliche Daten.
12. Was bedeutet NULL
Antwort: Der Wert NULL steht für UNKNOWN (unbekannt): Er stellt nicht „“ (leere Zeichenfolge) dar. Jeder Vergleich mit einem NULL-Wert führt zu einem NULL-Wert. Sie können keinen Wert mit einem NULL-Wert vergleichen und logischerweise erwarten, eine Antwort zu erhalten.
Verwenden Sie IS NULL für die NULL-Beurteilung
13. Was ist der Unterschied zwischen Primärschlüssel, Fremdschlüssel und Index?
Der Unterschied zwischen Primärschlüssel, Fremdschlüssel und Index
Definition:
Primärschlüssel – identifiziert einen Datensatz eindeutig, kann nicht dupliziert werden und darf nicht leer sein
Fremdschlüssel – der Fremdschlüssel von Die Tabelle ist eine andere. Der Primärschlüssel und der Fremdschlüssel der Tabelle können Duplikate oder Nullwerte haben.
Index – dieses Feld hat keine Duplikatwerte, kann aber einen Nullwert haben.
Funktion:
Primärschlüssel – verwendet um die Datenintegrität sicherzustellen
Fremdschlüssel –
Index, der zum Herstellen von Verbindungen mit anderen Tabellen verwendet wird – um die Geschwindigkeit der Abfragesortierung zu verbessern
Nummer:
Primärschlüssel – es kann nur einen Primärschlüssel geben
Fremdschlüssel – Eine Tabelle kann mehrere Fremdschlüssel-
-Indizes haben – Eine Tabelle kann mehrere eindeutige Indizes haben
14. Womit können Sie sicherstellen, dass die Felder in der Tabelle nur Werte in akzeptieren einen bestimmten Bereich?
Antwort: Überprüfen Sie die Einschränkung, die in der Datenbanktabelle definiert ist und zur Begrenzung des in dieser Spalte eingegebenen Werts dient.
Trigger können auch verwendet werden, um die Werte zu begrenzen, die Felder in Datenbanktabellen akzeptieren können. Für diese Methode müssen jedoch Trigger in der Tabelle definiert werden, was in einigen Fällen die Leistung beeinträchtigen kann.
15. Welche Methoden gibt es zur Optimierung von SQL-Anweisungen? (Wählen Sie einige aus)
(1) In der Where-Klausel: Die Verbindung zwischen Where-Tabellen muss vor anderen Where-Bedingungen geschrieben werden, und diejenigen Bedingungen, die die maximale Anzahl von Datensätzen herausfiltern können, müssen am Ende geschrieben werden der Where-Klausel .HAVING zuletzt.
(2) Ersetzen Sie IN durch EXISTS und NOT IN durch NOT EXISTS.
(3) Vermeiden Sie die Verwendung von Berechnungen für Indexspalten
(4) Vermeiden Sie die Verwendung von IS NULL und IS NOT NULL für Indexspalten
(5) Um Abfragen zu optimieren, sollten vollständige Tabellenscans so weit wie möglich vermieden werden. Zunächst sollte darüber nachgedacht werden, Indizes für die Spalten zu erstellen, die an „Where“ und „Reihenfolge nach“ beteiligt sind.
(6) Sie sollten versuchen, Nullwerturteile für Felder in der where-Klausel zu vermeiden, da die Engine sonst die Verwendung des Index aufgibt und einen vollständigen Tabellenscan durchführt.
(7) Versuchen Sie zu vermeiden, Nullwerte zu erstellen Urteile über Felder in der where-Klausel. Ausdrucksoperation, die dazu führt, dass die Engine die Verwendung des Index aufgibt und einen vollständigen Tabellenscan durchführt
16. Was ist der Unterschied zwischen „korrelierter Unterabfrage“ und „nicht korrelierter“. Unterabfrage' in SQL-Anweisungen?
Antwort: Unterabfrage: Eine in anderen Abfragen verschachtelte Abfrage wird als Abfrage bezeichnet.
Eine Unterabfrage wird auch als innere Abfrage bezeichnet, und die Anweisung, die die Unterabfrage enthält, wird als äußere Abfrage (auch als Hauptabfrage bezeichnet) bezeichnet.
Alle Unterabfragen können in zwei Kategorien unterteilt werden, nämlich korrelierte Unterabfragen und nicht korrelierte Unterabfragen
(1) Nicht korrelierte Unterabfragen sind von externen Abfragen unabhängige Unterabfragen. Nach der Ausführung werden die Unterabfragen einmal ausgeführt Wert für die äußere Abfrage.
(2) Die Ausführung der relevanten Unterabfrage hängt von den Daten der externen Abfrage ab. Wenn die externe Abfrage eine Zeile ausführt, wird die Unterabfrage einmal ausgeführt.
Daher sind nicht korrelierte Unterabfragen effizienter als korrelierte Unterabfragen
17 Was ist der Unterschied zwischen char und varchar?
Antwort: Es handelt sich um einen Typ mit fester Länge und varchar um einen Typ mit variabler Länge. Der Unterschied zwischen ihnen ist:
In der Datenspalte vom Typ char(M) belegt jeder Wert M Bytes . Wenn eine bestimmte Länge kleiner als M ist, füllt MySQL sie rechts mit Leerzeichen auf. (Auffüllzeichen werden während des Suchvorgangs entfernt.) In einer Datenspalte vom Typ varchar(M) nimmt jeder Wert gerade genug Bytes plus ein Byte ein, um seine Länge aufzuzeichnen ( Das heißt, die Gesamtlänge beträgt L+1 Bytes ).
18. MySQL-Speicher-Engine, der Unterschied zwischen Myisam und Innodb.
Antwort: Einfacher Ausdruck:
MyISAM ist eine nicht-transaktionale Speicher-Engine; geeignet für Anwendungen mit häufigen Abfragen, kein Deadlock; geeignet für kleine Datenmengen, kleine Parallelität;
innodb ist ein Speicher Engine, die Transaktionen unterstützt; geeignet für Anwendungen mit vielen Einfüge- und Aktualisierungsvorgängen; bei richtiger Gestaltung handelt es sich um eine Zeilensperre (der größte Unterschied liegt in der Ebene der Sperre, die für große Datenmengen und große Parallelität geeignet ist).
19. Welche Datentabellentypen gibt es?
Antwort: MyISAM, InnoDB, HEAP, BOB, ARCHIVE, CSV usw.
MyISAM: Ausgereift, stabil, einfach zu verwalten und schnell zu lesen. Einige Funktionen (Transaktionen usw.) unterstützen keine Sperren auf Tabellenebene.
InnoDB: unterstützt Transaktionen, Fremdschlüssel und andere Funktionen sowie das Sperren von Datenzeilen. Es nimmt viel Platz ein und unterstützt keine Volltextindizierung usw.
20. Die MySQL-Datenbank wird als Speicher des Veröffentlichungssystems verwendet. Der Zuwachs von mehr als 50.000 Elementen pro Tag wird auf drei Jahre Betrieb und Wartung geschätzt.
a. Entwerfen Sie eine gut gestaltete Datenbankstruktur, ermöglichen Sie teilweise Datenredundanz und vermeiden Sie Join-Abfragen, um die Effizienz zu verbessern.
b. Wählen Sie den entsprechenden Tabellenfelddatentyp und die Speicher-Engine aus und fügen Sie die Indizes entsprechend hinzu.
c. Master-Slave-Lese- und Schreibtrennung der MySQL-Bibliothek.
d. Suchen Sie nach regulären Tabellen, um die Datenmenge in einer einzelnen Tabelle zu reduzieren und die Abfragegeschwindigkeit zu verbessern.
e. Caching-Mechanismus hinzufügen, z. B. Memcached, APC usw.
f. Generieren Sie für Seiten, die sich nicht häufig ändern, statische Seiten.
g. Schreiben Sie effizientes SQL. Beispielsweise wird SELECT * FROM TABEL in SELECT field_1, field_2, field_3 FROM TABLE geändert.
21 Welche Methode verwenden Sie für Websites mit hohem Datenverkehr, um das Problem der Seitenbesuchsstatistiken zu lösen?
Antwort:
a. Bestätigen Sie, ob der Server den aktuellen Datenverkehr unterstützen kann.
b. Datenbankzugriff optimieren.
c. Verbieten Sie den externen Zugriff auf Links (Hotlinking), wie z. B. das Hotlinking von Bildern.
d. Datei-Downloads kontrollieren.
e. Verwenden Sie verschiedene Hosts, um den Datenverkehr zu verteilen.
f. Verwenden Sie eine Browsing-Statistiksoftware, um die Anzahl der Besuche zu ermitteln und eine gezielte Optimierung durchzuführen.
3: Objektorientierter Teil
Zurück nach oben
1. Was ist objektorientiert? (antworten Sie mit Verständnis)
Antwort: Objektorientiertes OO = objektorientierte Analyse OOA + objektorientiertes Design OOD + objektorientierte Programmierung OOP; die beliebte Erklärung ist, dass „alles ein Objekt ist“ und alle Dinge als unabhängige Objekte betrachtet werden. Einheit) können sie ihre eigenen Funktionen vervollständigen, anstatt wie C in Funktionen unterteilt zu werden.
Die aktuellen reinen OO-Sprachen sind hauptsächlich Java und C#. PHP und C++ unterstützen auch OO.
2. Beschreiben Sie kurz die Zugriffsrechte privater, geschützter und öffentlicher Modifikatoren.
Antwort: privat: private Mitglieder, auf die nur innerhalb der Klasse zugegriffen werden kann.
protected: geschützte Mitglieder, zugänglich innerhalb der Klasse und geerbter Klassen.
Öffentlich: Öffentliche Mitglieder, vollständig öffentlich, keine Zugriffsbeschränkungen.
3. Was ist der Unterschied zwischen Heap und Stack?
Antwort: Der Stapel ist ein Speicherplatz, der während der Kompilierung zugewiesen wird. Daher muss die Größe des Stapels in Ihrem Code klar definiert sein.
Der Heap ist ein Speicherplatz, der während der Programmausführung dynamisch zugewiesen wird. können Sie die Größe des zuzuordnenden Heap-Speichers basierend auf den Ausführungsbedingungen des Programms bestimmen.
4. Der Hauptunterschied zwischen XML und HTML
Antwort: (1) XML unterscheidet zwischen Groß- und Kleinbuchstaben, HTML jedoch nicht.
(2) In HTML können Sie schließende Tags wie
oder
weglassen, wenn der Kontext deutlich zeigt, wo der Absatz oder Listenschlüssel endet. In XML darf das schließende Tag nicht weggelassen werden.
(3) In XML müssen Elemente, die ein einzelnes Tag ohne passendes schließendes Tag haben, mit einem /-Zeichen enden. Auf diese Weise weiß der Parser, dass er nicht nach dem schließenden Tag suchen soll.
(4) In XML müssen Attributwerte in Anführungszeichen eingeschlossen werden. In HTML sind Anführungszeichen optional.
(5) In HTML können Sie Attributnamen ohne Werte haben. In XML müssen alle Attribute entsprechende Werte haben.
5. Was sind die Merkmale von Objektorientierung?
Antwort: Dazu gehören hauptsächlich Kapselung, Vererbung und Polymorphismus. Wenn es 4 Aspekte sind, fügen Sie hinzu: Abstraktion.
Die folgende Erklärung dient dem Verständnis:
Kapselung:
Kapselung ist die Grundlage dafür, dass Softwarekomponenten eine hervorragende Modularität aufweisen. Ziel der Kapselung ist es, eine hohe Kohäsion und geringe Kopplung von Softwarekomponenten zu erreichen und Programmabhängigkeiten zu verhindern . Die Auswirkung von durch die Natur verursachten Änderungen.
Vererbung:
Wenn Sie eine Klasse definieren und implementieren, können Sie dies auf der Grundlage einer vorhandenen Klasse tun und den von dieser vorhandenen Klasse definierten Inhalt als Ihren eigenen Inhalt verwenden , und Sie können neue Inhalte hinzufügen oder die ursprüngliche Methode ändern, um sie für spezielle Anforderungen besser geeignet zu machen. Dies ist Vererbung. Vererbung ist ein Mechanismus für Unterklassen zum automatischen Austausch von Daten und Methoden der übergeordneten Klasse. Dabei handelt es sich um eine Beziehung zwischen Klassen, die die Wiederverwendbarkeit und Skalierbarkeit von Software verbessert.
Polymorphismus:
Polymorphismus bedeutet, dass der spezifische Typ, auf den die im Programm definierte Referenzvariable zeigt, und die über die Referenzvariable ausgegebenen Methodenaufrufe nicht während der Programmierung, sondern während der Ausführung des Programms bestimmt werden Auf welches Klasseninstanzobjekt eine Referenzvariable verweist und welche Klasse den von der Referenzvariablen ausgegebenen Methodenaufruf implementiert, muss während der Ausführung des Programms ermittelt werden.
Abstraktion:
Abstraktion besteht darin, die Ähnlichkeiten und Gemeinsamkeiten einiger Dinge herauszufinden und diese Dinge dann in eine Klasse zu klassifizieren. Diese Klasse berücksichtigt nur die Ähnlichkeiten und Gemeinsamkeiten dieser Dinge und ignoriert das aktuelle Thema und diese Aspekte die für das Ziel irrelevant sind, konzentrieren sich auf diejenigen Aspekte, die für das aktuelle Ziel relevant sind. Wenn Sie beispielsweise eine Ameise und einen Elefanten sehen und sich vorstellen können, wie ähnlich sie sind, handelt es sich um Abstraktion.
6. Was sind die Konzepte und Unterschiede zwischen abstrakten Klassen und Schnittstellen?
Antwort: Abstrakte Klasse: Es handelt sich um eine spezielle Klasse, die nicht instanziiert werden kann und nur als übergeordnete Klasse anderer Klassen verwendet werden kann. Deklariert mit dem Schlüsselwort abstract.
Es handelt sich um eine spezielle abstrakte Klasse und eine spezielle Klasse, die über die Schnittstelle deklariert wird.
(1) Die Operationen abstrakter Klassen werden durch das Vererbungsschlüsselwort „extens“ implementiert, und die Verwendung von Schnittstellen wird durch das Schlüsselwort „implements“ implementiert.
(2) Es gibt Datenelemente in abstrakten Klassen, die eine Datenkapselung realisieren können, aber Schnittstellen haben keine Datenelemente.
(3) Abstrakte Klassen können Konstruktoren haben, aber Schnittstellen haben keine Konstruktoren.
(4) Methoden abstrakter Klassen können mit den Schlüsselwörtern private, protected und public geändert werden (abstrakte Methoden können nicht privat sein), während Methoden in Schnittstellen nur mit dem Schlüsselwort public geändert werden können.
(5) Eine Klasse kann nur von einer abstrakten Klasse erben und eine Klasse kann mehrere Schnittstellen gleichzeitig implementieren.
(6) Eine abstrakte Klasse kann Implementierungscode für Mitgliedsmethoden haben, aber eine Schnittstelle kann keinen Implementierungscode für Mitgliedsmethoden haben.
7. Was ist ein Konstruktor, was ist ein Destruktor und welche Funktion hat er?
Antwort: Der Konstruktor (Methode) ist die erste Methode, die das Objekt automatisch aufruft, nachdem das Objekt erstellt wurde. Sie existiert in jeder deklarierten Klasse und ist eine spezielle Member-Methode. Seine Funktion besteht darin, einige Initialisierungsaufgaben auszuführen. In PHP wird __construct() zum Deklarieren der Konstruktormethode verwendet, und es kann nur eine deklariert werden.
Der Destruktor (Methode) hat den gegenteiligen Effekt zum Konstruktor. Er ist die letzte Methode, die vom Objekt automatisch aufgerufen wird, bevor es zerstört wird. Dabei handelt es sich um einen neu in PHP5 hinzugefügten Inhalt, der dazu dient, bestimmte Vorgänge auszuführen, bevor ein Objekt zerstört wird, wie etwa das Schließen von Dateien und das Freigeben von Speicher.
8. Wie man die Methode der übergeordneten Klasse überlädt, geben Sie ein Beispiel
Antwort: Überladen bedeutet, die Methode der übergeordneten Klasse zu überschreiben, dh die Methode in der Unterklasse zu verwenden, um die von der übergeordneten Klasse geerbte Methode zu ersetzen, was auch als Methodenumschreiben bezeichnet wird.
Der Schlüssel zum Überschreiben der übergeordneten Klassenmethode besteht darin, dieselbe Methode in der übergeordneten Klasse in der Unterklasse zu erstellen, einschließlich Methodenname, Parameter und Rückgabewerttyp. In PHP müssen nur die Namen der Methoden identisch sein.
9. Was sind die am häufigsten verwendeten magischen Methoden? Beispiel
Antwort: PHP legt fest, dass Methoden, die mit zwei Unterstrichen (__) beginnen, als magische Methoden reserviert sind. Daher wird empfohlen, dass Ihr Funktionsname nicht mit __ beginnt, es sei denn, es geht um eine Überladung einer vorhandenen magischen Methode.
__construct() wird beim Instanziieren einer Klasse automatisch aufgerufen.
__destruct() wird automatisch aufgerufen, wenn das Klassenobjekt verwendet wird.
__set() wird aufgerufen, wenn einer undefinierten Eigenschaft ein Wert zugewiesen wird.
__get() wird aufgerufen, wenn undefinierte Eigenschaften aufgerufen werden.
__isset() wird aufgerufen, wenn die Funktion isset() oder empty() verwendet wird.
__unset() wird aufgerufen, wenn unset() verwendet wird.
__sleep() wird beim Serialisieren mit serialize aufgerufen.
__wakeup() wird beim Deserialisieren mit unserialize aufgerufen.
__call() wird aufgerufen, wenn eine Methode aufgerufen wird, die nicht existiert.
__callStatic() ruft eine statische Methode auf, die nicht existiert.
__toString() wird beim Konvertieren eines Objekts in einen String aufgerufen. Wie Echo.
__invoke() wird aufgerufen, wenn versucht wird, ein Objekt als Methode aufzurufen.
__set_state() wird aufgerufen, wenn die Funktion var_export() verwendet wird. Akzeptiert einen Array-Parameter.
__clone() wird aufgerufen, wenn clone zum Kopieren eines Objekts verwendet wird.
10. Was bedeuten die drei Schlüsselwörter $this bzw. self und parent? In welchen Situationen wird es verwendet?
Antwort: $this aktuelles Objekt
selbst aktuelle Klasse
übergeordnete übergeordnete Klasse der aktuellen Klasse
$this wird in der aktuellen Klasse verwendet, verwenden Sie ->, um Eigenschaften und Methoden aufzurufen.
Self wird auch in der aktuellen Klasse verwendet, muss aber mit :: aufgerufen werden.
parent wird in Klassen verwendet.
11. Wie man Konstanten in einer Klasse definiert, wie man Konstanten in einer Klasse aufruft und wie man Konstanten außerhalb einer Klasse aufruft.
Antwort: Die Konstanten in der Klasse sind auch Mitgliedskonstanten. Eine Konstante ist eine Größe, die sich nicht ändert und ein konstanter Wert ist.
Konstanten definieren Sie mit dem Schlüsselwort const.
Zum Beispiel: const PI = 3.1415326;
Ob innerhalb einer Klasse oder außerhalb einer Klasse, der Zugriff auf Konstanten unterscheidet sich vom Zugriff auf Variablen um Objekte zu instanziieren,
Das Format für den Zugriff auf Konstanten ist der Klassenname plus das aufzurufende Bereichsoperatorsymbol (Doppelpunkt).
Das heißt: Klassenname :: Klassenkonstantenname;
12. Wie verwende ich den Bereichsoperator::? In welchen Situationen wird es verwendet?
Antwort: Klassenkonstanten aufrufen
Statische Methoden aufrufen
13 Was ist das Funktionsprinzip der __autoload()-Methode?
Antwort: Die Grundvoraussetzung für die Verwendung dieser magischen Funktion ist, dass der Dateiname der Klassendatei mit dem Namen der Klasse übereinstimmen muss.
Wenn das Programm zum Instanziieren einer bestimmten Klasse ausgeführt wird und die Klassendatei nicht vor der Instanziierung eingeführt wird, wird die Funktion __autoload() automatisch ausgeführt.
Diese Funktion durchsucht den Pfad der Klassendatei basierend auf dem Namen der instanziierten Klasse. Wenn festgestellt wird, dass die Klassendatei im Pfad der Klassendatei vorhanden ist,
führen Sie „include“ oder „require“ aus, um sie zu laden Klasse und dann die Ausführung des Programms fortsetzen. Wenn die Datei in diesem Pfad nicht vorhanden ist, wird eine Fehlermeldung angezeigt.
Durch die Verwendung der magischen Funktion zum automatischen Laden entfällt die Notwendigkeit, viele Include- oder Require-Funktionen zu schreiben.
Viertens: ThinkPHP-Teil
Zurück nach oben
1. Gängige PHP-Frameworks
Antwort: thinkPHP, yii, ZendFramework, CakePhp, sy
2. Wie ist die Einzeleintragsdatei in TP zu verstehen?
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 verwandte Konstanten für Debugging-Modus und Laufmodus (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 ohne besonders klare 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): Der Anwendungscontroller (App-Klasse des Kerncontrollers) und der Aktionscontroller übernehmen beide die Rolle des Controllers. Der Aktionscontroller übernimmt die Geschäftsprozesssteuerung, während der Anwendungscontroller für die Planungssteuerung verantwortlich ist.
Ansicht (V): Sie besteht aus einer Ansichtsklasse und einer Vorlagendatei. Die Vorlage ist zu 100 % getrennt und kann unabhängig voneinander in der Vorschau angezeigt und erstellt werden.
Aber tatsächlich ist ThinkPHP nicht auf M oder V angewiesen, was bedeutet, dass es ohne Modelle oder Ansichten arbeiten 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 basierend auf ihrem eigenen Verständnis angeben.)
Antwort: (1) Wählen Sie die richtige Speicher-Engine
Nehmen Sie MySQL als Beispiel, einschließlich Es gibt zwei Speicher-Engines, MyISAM und InnoDB, und jede Engine hat Vor- und Nachteile.
MyISAM eignet sich für einige 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, und für einige kleine Anwendungen wird sie langsamer sein 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) Optimieren Sie den Datentyp des Feldes.
Denken Sie an einen Grundsatz: Je kleiner die Spalte, 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) Fügen Sie einen Index zum Suchfeld hinzu
Der Index bedeutet nicht unbedingt den Primärschlüssel oder das einzige Feld. Wenn es in Ihrer Tabelle ein Feld gibt, das Sie immer für die Suche verwenden, ist es am besten, es zu indizieren. Sofern es sich bei dem zu durchsuchenden Feld nicht um ein großes Textfeld handelt, 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 Last der 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.
(6) Verwenden Sie wann immer möglich NOT NULL
Es sei denn, Sie haben einen ganz bestimmten Grund, NULL-Werte zu verwenden, sollten Sie Ihre Felder 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 „feste Länge“ 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 der ThinkPHP 3.0-Architektur drei zu verstehen (Kern + Verhalten + Treiber)?
Antwort: Kern + Verhalten + Treiber
Die offizielle Abkürzung von TP lautet: CBD
Kern: Es ist der Kerncode des Frameworks, eine unverzichtbare Sache, auf der TP selbst basiert die MVC-Idee.
Verhalten: Verhalten spielt eine entscheidende Rolle in der Architektur der neuen Version von ThinkPHP. Zusätzlich zum Systemkern gibt es viele Tag-Erweiterungsbits, und jede Tag-Position kann der Reihe nach ihr eigenes unabhängiges Verhalten ausführen. 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. 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 die von anderen aufgebaute Bühne 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) verfügt, die sich im Systemverzeichnis befindet für die meisten Verwendungszwecke, 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 Sie Zeichenfolgenabfragebedingungen verwenden 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.)
(4) Verwenden Sie automatische Überprüfungs- und Vervollständigungsmechanismen, um eine automatische Überprüfung durchzuführen Anwendungen. Filterung definieren; (5) Feldtypprüfung, automatische Verifizierung und automatische Vervollständigungsmechanismen verwenden, um die Eingabe schädlicher Daten zu verhindern.
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 lediglich eine Zeile Konstantendefinitionscode zur Eintragsdatei hinzufügen:
Debugging-Modus aktivieren
Nach Abschluss der Entwicklung Nachdem die Phase in der Produktionsumgebung bereitgestellt wurde, müssen Sie nur den Definitionscode für den Debugmodus löschen, um in den Bereitstellungsmodus zu wechseln. 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; Feld-Caching wird deaktiviert; Änderungen an Datentabellenfeldern werden nicht durch das Caching beeinflusst (auch auf Windows-Plattformen); 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-> -> Dynamische Konfiguration
Das Obige ist die Ladereihenfolge der Konfigurationsdateien. Da die nachfolgende Konfiguration die vorherige Konfiguration mit demselben Namen überschreibt (wenn sie nicht wirksam ist), 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"],[ " Standardwert"])
13. Was ist der Unterschied zwischen D-Funktion und M-Funktion im ThinkPHP-Framework?
Antwort: Die M-Methode instanziiert das Modell, ohne dass der Benutzer eine Modellklasse für jede Datentabelle definiert. Die D-Methode kann die Modellklasse automatisch erkennen Wenn die benutzerdefinierte Modellklasse nicht vorhanden ist, wird die M-Methode automatisch aufgerufen, um die Modellbasisklasse zu instanziieren. Gleichzeitig werden instanziierte Modelle nicht wiederholt instanziiert (Einzelfallmodus).
Fünf: Smarty Template Engine
Zurück nach oben
1 Was ist der Unterschied zwischen Kompilierung und Caching?
Der Kompilierungsprozess von Smarty besteht darin, die Vorlage zu übernehmen und die darin enthaltenen Tags durch den entsprechenden PHP-Code zu ersetzen. Tatsächlich handelt es sich dabei um den Prozess des Mischens von PHP und HTML Der Cache von Smarty muss manuell aktiviert werden, um die kompilierte Datei auszuführen und gleichzeitig eine statische HTML-Seite zu generieren. Wenn Sie erneut darauf zugreifen, ist die Effizienz höher
2. Was ist Smarty? Was sind die Vorteile von Smarty?
Smarty ist eine in PHP geschriebene PHP-Vorlagen-Engine. Der Zweck besteht darin, das PHP-Programm vom Künstler zu trennen, sodass eine Änderung des logischen Inhalts des Programms durch den Programmierer keine Auswirkungen auf das Seitendesign des Künstlers hat Wenn der Künstler die Seite erneut ändert, hat dies keinen Einfluss auf das Seitendesign. Es hat jedoch Auswirkungen auf die Programmlogik des Programms, was besonders bei Kooperationsprojekten mit mehreren Personen wichtig ist. (Es ist auch einfach, Programme mit mehreren Stilen zu entwickeln)
Vorteile von Smarty
1. Schnell: im Vergleich zu anderen Template-Engines.
2. Kompilierter Typ: Ein in Smarty geschriebenes Programm muss zur Laufzeit in eine Nicht-Template-Technologie-PHP-Datei kompiliert werden
3. Es kann die HTML-Datei, die der Benutzer schließlich sieht, in einer statischen HTML-Seite zwischenspeichern
4. Plug-in-Technologie: smarty kann Plug-ins anpassen.
Orte, an denen smarty nicht geeignet ist
1. Inhalte, die in Echtzeit aktualisiert werden müssen. Beispielsweise müssen die Daten wie bei der Bestandsanzeige regelmäßig aktualisiert werden
2. Kleine Projekte. Kleine Projekte, die aufgrund ihrer Einfachheit sowohl einen Künstler als auch einen Programmierer erfordern
3. Verwenden Sie {$smarty}, um Variablen in der Vorlage beizubehalten
{$smarty.get.page} //Ähnlich Greifen Sie auf $_GET[page]
{smarty.cookies.}
{smarty.post.}
{smarty.session.}
{smarty.server.}
4 zu. Zugriff auf Variablen in PHP in Vorlagen
Es gibt zwei Arten von Systemkonstanten und benutzerdefinierten Konstanten in PHP-Skripten. Auf diese beiden Konstanten kann auch in Smarty-Vorlagen zugegriffen werden und es muss nicht über den in PHP zugewiesenen Wert zugegriffen werden der Konstante kann direkt ausgegeben werden, solange die Variable durch {$smarty} beibehalten wird. Beispiel für die Ausgabe von Konstanten in Vorlagen:
{$smarty.const._MY_CONST_VAL}
{$smarty.const.__FILE__}
5. Variable Mediator
Variablenvermittler
6. Wenn PHP die MySQL-Datenbank abfragt, erscheinen bei der Abfrage der chinesischen Ergebnisse verstümmelte Zeichen. Wie kann man es lösen?
1. Dateieigenschaften (speichern unter)
2. Datei-Meta (beim Einrichten der Browser-Analyse)
3. Kodierungseinstellungen beim Herstellen einer Verbindung zur Datenbank
4. Verwenden Sie die Header-Funktion in PHP-Dateien, um die Kodierung zu bestimmen
7
Wenn das Caching aktiviert ist, generiert smarty gleichzeitig eine statische HTML-Seite. Wenn diese nicht innerhalb der festgelegten Zeit abläuft, greifen Sie beim erneuten Zugriff auf die HTML-Datei zu, wodurch die Notwendigkeit zum Lesen verringert wird Datenbank, also in Bezug auf Effizienz, Seien Sie höher. 8. Smartys Zuweisungs- und Ladevorlage$Smarty->assign(name,value)$Smarty->display('index.html')
Instanziieren Sie das Smarty-Objekt.
Ändern Sie den Standardvorlagenpfad erneut.
Ändern Sie die standardmäßig kompilierte Datei Pfad;
5. Ändern Sie den Standardpfad der Konfigurationsdatei.
7. Sie können festlegen, ob der Cache aktiviert werden soll.
8. Sie können linke und rechte Trennzeichen festlegen.
11. Auf welche Details müssen Sie bei der Nutzung von smarty achten?
Smarty ist eine Template-Engine, die auf dem MVC-Konzept basiert. Sie unterteilt ein Seitenprogramm zur Implementierung in zwei Teile: die Ansichtsebene und die Steuerungsebene.
Mit anderen Worten: Die Smarty-Technologie kombiniert Benutzeroberfläche und PHP Code getrennt.Auf diese Weise können Programmierer und Künstler ihre jeweiligen Aufgaben erfüllen, ohne sich gegenseitig zu stören.
12. Achten Sie bei der Verwendung von smarty auf folgende Punkte:
1. Es muss hauptsächlich das Smarty-Objekt instanziiert und der Pfad der Smarty-Vorlagendatei konfiguriert werden.
2. Verwenden Sie die Zuweisung und Anzeige, um die Seite auf der PHP-Seite anzuzeigen.3 In der Smarty-Vorlagendatei zulässige Variablen und Funktionen müssen in Trennzeichen enthalten sein.
A.{}
B. foreach
D >
Zurück zum Anfang
1. Verständnis der Sekundärentwicklung
Vorlagenanzeige anzeigen.
Controller steuert den Prozess.Was ist das Konzept von MVC? Was sind die Hauptaufgaben jedes Levels?
MVC (Model-View-Controller) ist ein Software-Designmuster oder eine Programmieridee.M bezieht sich auf die Modellmodellebene, V ist die Ansichtsebene (Anzeigeebene oder Benutzeroberfläche) und C ist die Controllerebene.
Der Zweck der Verwendung von mvc besteht darin, M und V zu trennen, sodass ein Programm problemlos verschiedene Benutzeroberflächen verwenden kann.Bei der Website-Entwicklung ist die
Modellebene im Allgemeinen für das Hinzufügen, Löschen, Ändern und Überprüfen von Datenbanktabelleninformationen verantwortlich.
Die Ansichtsebene ist für die Anzeige von Seiteninhalten verantwortlich.
Die Controller-Ebene spielt eine Rolle Regulierungsrolle zwischen M und V. Die Controller-Schicht entscheidet, welche Methode welcher Modellklasse aufgerufen werden soll.
Nach der Ausführung entscheidet die Controller-Schicht, welcher Ansichtsschicht das Ergebnis zugewiesen werden soll.
3. Beim Zugriff auf das sekundäre Entwicklungsprogramm nach der Installation werden einige Warnungen und Fehler angezeigt.
Ändern Sie entsprechend den Fehlern die Serverkonfigurationsparameter und Baidu
4 Ersetzen, Hinzufügen und Ändern von Funktionen
6. Ist es besser, eine Primärentwicklung wie PHP oder eine Sekundärentwicklung durchzuführen?
Im Allgemeinen verwenden kleine und mittlere Unternehmen aus Effizienzgründen das CMS-System für die Sekundärentwicklung. Wenn Sie alles auf einmal entwickeln möchten, ist das natürlich in Ordnung, solange Sie wissen, wie man das Framework verwendet, und genügend Zeit haben. Große Unternehmen entwickeln in Teams, um Urheberrechtsprobleme zu vermeiden.
7. Wie werden im sekundären Entwicklungsprozess die Methodenzugriffe zwischen vielen Klassen übertragen?
Es handelt sich nicht um eine Klassenvererbung, sondern um eine Objektkombination.
8 Wenn dedecms das Verzeichnis ändert, kann das Problem nicht gelöst werden.
Ändern Sie die Hintergrundkerneinstellungen auf den aktuellen Projektverzeichnisnamen
9. Was ist das Verständnis des benutzerdefinierten Modells in dedecms?
Im DreamWeaver-System gibt es das Konzept des Inhaltsmodells, mit dem Websites mit unterschiedlichen Inhaltsformen erstellt werden können. Das System umfasst die folgenden Modelle: gewöhnliche Artikel, Fotoalben, Software usw Produkte, Verschlusssachen, Spezialthemen. Durch die mit dem System gelieferten Modelle können wir damit verschiedene Arten von Websites erstellen. Sie können beispielsweise einen Atlas verwenden, um eine Bilder-Site zu erstellen, und ein Softwaremodell verwenden, um eine Software-Download-Site zu erstellen.
Natürlich werden die oben genannten Modelle, die mit dem System geliefert werden, als Systemmodelle bezeichnet. Benutzer können einige Modelle selbst definieren, z. B. Bücher, Musikalben usw. Nur durch die Anpassung dieser Modelle können sie Websites mit mehr Inhaltsformen erstellen.
Es ist gleichbedeutend damit, dass wir automatisch eine Tabellenstruktur hinzufügen, um uns an Änderungen der aktuellen Bedürfnisse anzupassen
10 Konzepte beim Entwerfen und Verwenden von Vorlagen müssen Sie die folgenden Konzepte verstehen
1 . Abschnitts-(Cover-)Vorlage:
bezieht sich auf die von der Website-Homepage verwendete Vorlage oder den wichtigeren Spalten-Cover-Kanal. Sie wird im Allgemeinen mit „index_identification ID.htm“ benannt Der Benutzer kann auch auswählen, ob Abschnittsvorlagen-Tags unterstützt werden sollen. Wenn dies unterstützt wird, verwendet das System die Abschnittsvorlagen-Tag-Engine zum Parsen, bevor der Inhalt ausgegeben oder eine bestimmte Datei generiert wird.
2. Listenvorlage:
bezieht sich auf die Vorlage für die Liste aller Artikel in einer bestimmten Spalte der Website, im Allgemeinen benannt mit „list_identification ID.htm“.
3. Dateivorlage:
stellt die Vorlage der Dokumentanzeigeseite dar, z. B. die Artikelvorlage, die im Allgemeinen mit „article_identification ID.htm“ benannt ist.
4. Andere Vorlagen:
Das allgemeine System umfasst im Allgemeinen Vorlagen: Homepage-Vorlage, Suchvorlage, RSS, JS-Kompilierungsfunktionsvorlage usw. Darüber hinaus können Benutzer auch eine Vorlage anpassen, um eine beliebige Datei zu erstellen.
11. Wie viele Tags werden in dede verwendet?
Listeninhalts-Tags können nur innerhalb ihres Gültigkeitsbereichs verwendet werden, Listen-Tags können nur in Listen verwendet werden und Inhalts-Tags können nur in Inhalts-Tags verwendet werden.
Globale Tags können auf allen Seiten verwendet werden
12. Vertraut mit allgemeinen Klassenbibliotheken
(zum Beispiel: dedesql.class.php); vertraut mit Systemfunktionsbibliotheken (common.func .php) ; Vertraut mit der benutzerdefinierten Funktionsbibliothek (extend.func.php); Vertraut mit der Front-End-Eintragsdatei (common.inc.php)
7. Entwicklung der öffentlichen WeChat-Plattform
Zurück nach oben
1. WeChat-Betriebsmechanismus
Welche Sprache wird für die Kommunikation zwischen dem offiziellen Konto und PHP verwendet: "];//Daten empfangen XML-Daten
2. Nachricht Typ
WeChat bietet derzeit 7 grundlegende Nachrichtentypen:
(1) Textnachricht (Text); (2) Bildnachricht (Bild); Stimme) (4) Video (Video)
(5) Geografischer Standort (Standort);
(6) Linknachricht (Link)
(7) Ereignis-Push (Ereignis)
Typ. Beherrschen Sie das Datenübertragungsformat beim Senden verschiedener Nachrichtentypen
3. Die Funktion, die die gesamte Datei in eine Zeichenfolge einliest, ist
File_get_contents
4
Die Funktion, die XML-Daten in Objekte analysiert, istsimplexml_load_string( )
Die Funktion, die Zeichenfolgen in Arrays umwandelt, ist ___explode________, und die Funktion, die Arrays in Zeichenfolgen umwandelt, ist ____implode________.Codierung Die Zeichenfolge von Die URL-Zeichenfolge lautet ____urlencode________.
Die Funktion der Sprintf-Funktion
Sie können hierzu im Handbuch nachsehen.
(2) Codefehler, wie man den Grund errät
Überprüfen Sie, wo Sie ihn geändert haben. Wenn der Code korrekt istkönnen Sie ihn ausgeben Daten und werfen Sie einen Blick darauf. Verwenden Sie PHP, um Dateien zu bedienen
$myfile = fopen("newfile.txt", "w");$txt ="aaaaaaaaaa";
fwrite($myfile, $txt);
fclose ( $myfile);
7. Benutzerdefiniertes Menü-Ereignis-Push
Klicken
Klicken Sie auf den Sprunglink
Scannen Sie den Code, um zu pushen und Popup
Das Ereignis, das das System zum Aufnehmen und Versenden von Bildern öffnetDas Ereignis, das den Absender des WeChat-Albums öffnet
Das Ereignis, das die geografische Standortauswahl öffnet
8. Die Rolle des Tokens
Überprüfung des Sicherheitsmechanismus, der für die Sicherheitsüberprüfung zwischen WeChat-Server und PHP-Server verwendet wird
1. Nehmen Sie PHP + MYSQL als Richtung, beherrschen Sie die Smarty-Template-Engine, das ThinkPHP-Framework, die öffentliche WeChat-Plattformentwicklung, DEDE, Ecshop und andere sekundäre Entwicklungssysteme und verfügen Sie über ein gewisses Verständnis für objektorientiert Datenbank, beherrschen Sie MYSQL, MSSQL und andere Datenbanken; vertraut mit PHP-Entwicklung unter Linux
2. Front-End-Technologie: beherrschen Sie DIV+CSS-Webseitenlayout, Javascript, JQuery-Framework, AJAX-Technologie, Photoshop-Bildverarbeitung
3. Nach einem Jahr Erfahrung in der Projektentwicklung habe ich Smarty für die Entwicklung von „XXXXXXXX“, ThinkPHP für die Entwicklung von „XXXXXXXX“, die öffentliche WeChat-Plattform für die Entwicklung des öffentlichen Kontos des „Employment Service Network“ und das Dreamweaver-System verwendet zur Entwicklung von Unternehmenswebsites usw.