Heim  >  Artikel  >  Backend-Entwicklung  >  Teilen der wichtigsten PHP-Interviewfragen (1)

Teilen der wichtigsten PHP-Interviewfragen (1)

小云云
小云云Original
2018-03-22 13:38:491650Durchsuche

Dieser Artikel teilt Ihnen hauptsächlich einige Interviewfragen zu PHP mit. Ich hoffe, dass sie Ihnen helfen können.

1. Einer der Hauptvorteile der PHP-Sprache ist plattformübergreifend.

Die optimale Kombination der PHP-Betriebsumgebung ist Apache+MySQL+PHP. Diese Betriebsumgebung kann auf verschiedenen Betriebssystemen (wie Windows, Linux usw.) konfiguriert werden und ist nicht durch das Betriebssystem eingeschränkt System, daher heißt es 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-Methoden

Unterschiede: 1. Get ruft Daten vom Server ab und Post überträgt Daten an den Server

2. Der von Get übergebene Wert ist sichtbar in die URL und der Beitrag Unsichtbar in der URL

4 Der von Get übergebene Wert liegt im Allgemeinen innerhalb von 2 KB, und die Größe des per Post übergebenen Werts kann in php.ini

5 festgelegt werden . Die Sicherheit von Get ist nicht niedrig und die Sicherheit von Post Höher, aber die Ausführungseffizienz ist höher als bei Post

Empfehlungen:

1 Der Get-Typ ist weniger sicher als der Post-Typ . Es wird empfohlen, die Methode „Post“ für die Datenabfrage zu verwenden Daten löschen;

Die von Baidu verwendete Get-Methode, da sie anhand ihrer URL ersichtlich ist

3. Verstehen Sie, welche Frameworks, Template-Engines, Systeme usw. von PHP

Framework: Es gibt viele Frameworks, wie z. B. Zendframe, CI, Yii usw. Was wir gelernt haben, ist thinkphp

Template Engine: Es gibt auch viele in den Lehrbüchern. Was wir gelernt haben, ist das Smarty

System: Es gibt viele, wie zum Beispiel: Kangsheng-Produkte (uchome, supesite, discuzX usw.), Empire-System, DEDE (Dream Weaver), Ecshop usw. Was wir gelernt haben, ist DEDECMS, Ecshop

4. Welche Web-Frontend-Technologien beherrschen Sie?

Kompetent in p+CSS-Webseitenlayout, JavaScript, jQuery-Framework, Photoshop-Bildverarbeitung

5. 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, was den Druck auf den Server verringert und die Benutzererfahrung verbessert

6. zu-eins 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 Überflutung der Registrierungsmaschine und verwenden Sie Verifizierungscodes;

7. Wie kann die Leistung des Programms verbessert werden? 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 der MYSQL-Datenbank. Natürlich kann PHP auch mit anderen Datenbanken verwendet werden, z. B. verfügt PHP über reservierte Funktionen für den Betrieb von MSSQL, die verwendet werden können, solange es aktiviert ist

9. Heutzutage wird die dreischichtige MVC-Struktur häufig in der Programmierung verwendet. Auf welche drei Schichten bezieht sich 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.

Das JSON-Format wird in PHP verarbeitet Die Funktion ist json_decode(string $json [, bool $assoc]), die eine Zeichenfolge im JSON-Format akzeptiert und in eine PHP-Variable konvertiert. Der Parameter json ist die zu dekodierende Zeichenfolge im JSON-Format. assoc Wenn dieser Parameter TRUE ist, wird ein Array anstelle eines Objekts zurückgegeben.

Json_encode: Konvertieren Sie PHP-Variablen in das JSON-Format

14. Was sind die allgemeinen Funktionen für PHP, um Arrays zu verarbeiten? (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 Value; ⑧in_array() prüft, ob der angegebene Wert im Array vorhanden ist; (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 eine andere Zeichenfolge; ④substr_count() zählt, wie oft eine Teilzeichenfolge in der Zeichenfolge vorkommt; ein Teil der Zeichenfolge; ⑤strtoupper() wandelt die Zeichenfolge in Großbuchstaben um; ⑧strrchr() findet die Zeichenfolge in einem anderen Zeichen; string; ⑨ strstr() findet das erste Vorkommen einer Zeichenfolge in einer anderen Zeichenfolge (Groß- und Kleinschreibung beachten); strlen() gibt die Länge der Zeichenfolge zurück; -sensitive); print() gibt einen oder mehrere Strings aus; is_string() erkennt, ob die Variable ein String ist; mb_substr() ist eine Funktion zum Abfangen von Chinesisch und Englisch

16. Häufig verwendete Funktionen für die PHP-Verarbeitungszeit? (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.

microtime() gibt die Anzahl der Mikrosekunden in der aktuellen Zeit 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.

17. 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.

18 Verwendete Funktionen zum Betreiben von Dateien in PHP? (Konzentrieren Sie sich auf die „Parameter“ und den „Rückgabewert“ der Funktion) ②Datei löschen; ④Datei ändern; ⑦Datei erstellen; . Dieses Element wird häufig zum Generieren von Cache- oder statischen Dateien bei der Arbeit verwendet. Bitte lesen Sie es sorgfältig durch.

Was sind die allgemeinen Funktionen von PHP-Betriebsverzeichnissen? (Ordner)? (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

3. Objektorientierter Teil

1. Was ist objektorientiert? (Antwort mit Verständnis)

Antwort: Objektorientierte OO = objektorientierte Analyse OOA + objektorientiertes Design OOD + objektorientierte Programmierung OOP; Eine beliebte Erklärung lautet „Alles ist ein Objekt“. Behandeln Sie alle Dinge als unabhängige Objekte (Einheiten), die ihre eigenen Funktionen erfüllen können, 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: Auf private Mitglieder kann nur innerhalb der Klasse zugegriffen werden.

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

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 gesetzt 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:

Die Kapselung ist die Grundlage dafür, dass Softwarekomponenten eine hervorragende Modularität aufweisen. Ziel der Verpackung ist es, einen hohen Inhalt zu erreichen Softwarekomponenten. Aggregation, geringe Kopplung, Verhinderung der Auswirkungen von Änderungen durch Programmabhängigkeit

Vererbung:

Wenn Sie eine Klasse definieren und implementieren, können Sie dies auf der Grundlage einer vorhandenen Klasse tun. Sie können den von dieser vorhandenen Klasse definierten Inhalt als Ihren eigenen Inhalt verwenden und neue Inhalte hinzufügen oder ändern Die Methode ist besser für besondere Bedürfnisse geeignet, nämlich die 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 der über die Referenzvariable ausgegebene Methodenaufruf nicht während der Programmierung, sondern im Programm bestimmt werden Zur Laufzeit wird bestimmt, dass eine Referenzvariable auf ein Instanzobjekt welcher Klasse zeigt. Der von der Referenzvariable ausgegebene Methodenaufruf ist eine Methode, die in welcher Klasse implementiert ist. Dies 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 einzuteilen. In dieser Klasse werden nur die Ähnlichkeiten und Gemeinsamkeiten dieser Dinge berücksichtigt Ignorieren Sie die Aspekte, die für das aktuelle Thema und Ziel irrelevant sind, und konzentrieren Sie sich auf 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. Wird mit dem Schlüsselwort abstract deklariert.

Es handelt sich um eine spezielle abstrakte Klasse und eine spezielle Klasse, die die Schnittstellendeklaration verwendet.

(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 der abstrakten Klasse, die die Datenkapselung realisieren können, aber die Schnittstelle verfügt nicht über 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) ist genau das Gegenteil des Konstruktors. 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. So überladen Sie die Methode der übergeordneten Klasse mit Beispielen

Antwort: Überladen bedeutet, die Methode der übergeordneten Klasse zu überschreiben, also die Methode zu verwenden In der Unterklasse wird das Ersetzen einer von der übergeordneten Klasse geerbten Methode auch als Methodenüberschreiben bezeichnet.

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 ist lediglich erforderlich, dass die Namen der Methoden gleich sind.

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 -> ;Eigenschaften und Methoden aufrufen.

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 mit dem Schlüsselwort const definieren.

Zum Beispiel: const PI = 3.1415326;

Ob innerhalb einer Klasse oder außerhalb einer Klasse, der Zugriff von Konstanten unterscheidet sich von dem von Variablen. Konstanten müssen keine Objekte instanziieren

Zugriff auf Konstanten Das Format ist der Klassenname plus das aufzurufende Bereichsoperationssymbol (Doppelpunkt).

Das heißt: Klassenname :: Klassenkonstantenname;

12. In welchen Situationen wird es verwendet?

Antwort: Klassenkonstanten aufrufen

Statische Methoden aufrufen

13. Wie funktioniert die Methode __autoload()?

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 findet 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 diese Klasse zu laden. 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.

4. ThinkPHP-Teil

1. Gängige PHP-Frameworks

Antwort: thinkPHP

yii

ZendFramework

CakePhp

sy

2. Wie versteht man die Einzeleintragsdatei in TP?

Antwort: ThinkPHP verwendet einen Einzeleingangsmodus 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 zugehörige Konstanten für den Debugging-Modus und den Ausführungsmodus (optional)

Laden Sie die Framework-Eintragsdatei (erforderlich)

3. MVC in ThinkPHP Was ist Schichtung? ? (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): Anwendungscontroller (Kerncontroller-App-Klasse) und 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 Ansichtsklasse und 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 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.

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

Antwort: Kern + Verhalten + Treiber

Offizielle TP-Abkürzung: CBD

Kern: Es ist der Kerncode des Frameworks, eine unverzichtbare Sache, TP selbst ist ein Framework basierend auf MVC-Ideen entwickelt.

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 befolgt. Das System verfügt über eine integrierte Konventionskonfigurationsdatei (Confconvention.php), die sich im Systemverzeichnis befindet ). Den meisten zufolge wird die Standardkonfiguration allgemeiner Parameter verwendet. 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? (Verständnis)

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, was eine sicherere Methode ist

(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 die automatische Überprüfung und Autovervollständigungsmechanismen zum benutzerdefinierten Filtern von Anwendungen;

(5) Verwenden Sie Feldtypprüfung, automatische Verifizierung und Autovervollständigungsmechanismen, 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 nur eine Zeile Konstantendefinitionscode zur Eintragsdatei hinzufügen:

//Debugging-Modus aktivieren

define('APP_DEBUG', true);

//Framework-Eintragsdatei laden

require './ThinkPHP/ThinkPHP.php' ;

in Nach Abschluss der Entwicklungsphase und der Bereitstellung in der Produktionsumgebung müssen Sie nur den Definitionscode für den Debugmodus löschen, um in den Bereitstellungsmodus zu wechseln. Nach dem Aktivieren des Debugging-Modus 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, beliebig Fehlerinformationen und Debugging-Informationen werden detailliert aufgezeichnet, um das Debuggen zu erleichtern.

Schalten Sie den Vorlagencache aus. Änderungen an der Vorlage können sofort wirksam werden.

Erfassen Sie SQL-Protokolle, um die SQL-Analyse zu erleichtern

Feld-Caching schließen, Änderungen an Datentabellenfeldern sind vom Caching nicht betroffen.

prüft die Datei-Groß-/Kleinschreibung (auch auf Windows-Plattformen), damit Sie Linux-Bereitstellungsprobleme im Voraus erkennen können können bequem in verschiedenen Phasen des Entwicklungsprozesses verwendet werden, einschließlich aller erforderlichen Situationen wie Entwicklung, Test und Demonstration. Verschiedene Anwendungsmodi können unabhängige Projektkonfigurationsdateien konfigurieren.

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->Gruppe Konfiguration->Erweiterte Konfiguration->Dynamische Konfiguration

Das Obige ist die Ladereihenfolge der Konfigurationsdateien, da die nachfolgende Konfiguration die vorherige Konfiguration mit demselben Namen überschreibt (ohne wirksam zu werden), also die Prioritätsreihenfolge ist 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:

Sie müssen nur die folgende Methode in Aktion aufrufen:

$this->Methodenname („Variablenname“,[„Filtermethode“],[„Standardwert“])

13. Was ist der Unterschied zwischen der D-Funktion und der 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).

Zurück nach oben

5. Smarty Template Engine

1. Was ist der Unterschied zwischen Kompilierung und Caching?

Der Kompilierungsprozess von Smarty besteht darin, die darin enthaltenen Tags durch den entsprechenden PHP-Code zu ersetzen. Tatsächlich handelt es sich um den Prozess des Mischens von PHP und HTML

Smartys Cache muss manuell aktiviert werden, um die kompilierte Datei auszuführen und gleichzeitig eine statische HTML-Seite zu generieren Die HTML-Datei ist also effizienter.

2. Was sind die Vorteile von Smarty?

Smarty ist eine PHP-Template-Engine In PHP geschrieben, besteht der Zweck 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, und wenn der Künstler die Seite erneut ändert, wird dies der Fall sein Dies hat keinen Einfluss auf die Programmlogik des Programms. Dies ist besonders wichtig bei der Zusammenarbeit mit mehreren Personen. (Es ist auch einfach, Multi-Style-Programme 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 Caching-Technologie: Die HTML-Datei, die der Benutzer schließlich sieht, kann in einer statischen HTML-Seite zwischengespeichert werden.

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 sind wie bei der Bestandsanzeige häufige Datenaktualisierungen erforderlich. 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 wie beim Zugriff auf $_GET[page]

{ in a PHP-Skript smarty.cookies.}

{smarty.post.}

{smarty.session.}

{smarty.server.}

4. 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. Sie müssen nicht von PHP zugewiesen werden , kann der Wert der Konstante direkt ausgegeben werden, solange die Variable über {$smarty} beibehalten wird. Beispiel für die Ausgabe von Konstanten in Vorlagen:

{$smarty.const._MY_CONST_VAL}

{$smarty.const.__FILE__}

5 Modifikator

{$var|modifier1|modifier2|.....}

<{$str} >

<{$str|capitalize}><{*Der erste Buchstabe wird großgeschrieben*}>

<{$str|upper }>< ;{*alle Großbuchstaben*}>

<{$str|lower}><{*alle Kleinbuchstaben*}>
;{$str|lower|upper}><{*alle Großbuchstaben, angepasst von links nach rechts*}>

<{$leg|truncate}> ;<{ *String-Interception, Standard 80 Zeichen*}>

<{$leg|truncate:10}><{*String-Interception, erste 10 Zeichen, einschließlich... drei Zeichen *}>

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 der PHP-Datei, um die Kodierung zu bestimmen

7. Caching-Mechanismus

Wenn das Caching aktiviert ist, generiert smarty gleichzeitig eine statische HTML-Seite, wenn diese nicht innerhalb der festgelegten Zeit abläuft. Wenn Sie es erneut besuchen, wird die Seite, die Sie besucht haben, als HTML-Datei angezeigt, wodurch die Notwendigkeit, die Datenbank zu lesen, verringert wird, sodass die Effizienz höher ist.

8. Smarty-Zuweisungs- und Ladevorlage

$Smarty->assign(name,value)

$Smarty->display (' index.html')

9. Wozu dient die Smarty-Template-Technologie?

Um PHP und HTML zu trennen, sollten Künstler und Programmierer ihre eigenen Aufgaben erfüllen, ohne sich gegenseitig zu stören.

10. Was sind die Hauptkonfigurationen von smarty?

1. Führen Sie smarty.class.php ein;

Instanziieren Sie das Smarty-Objekt.

Ändern Sie den Standardvorlagenpfad erneut.

4. Ändern Sie den Standardpfad für die kompilierte Datei erneut.

6.

7. Sie können festlegen, ob der Cache aktiviert werden soll.

8. Sie können die linken und rechten 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 mit vom PHP-Code getrennt.

Auf diese Weise können Programmierer und Künstler ihre Aufgaben erfüllen, ohne sich gegenseitig zu stören.

12. Achten Sie bei der Verwendung von smarty auf folgende Punkte:

1. Es ist hauptsächlich erforderlich, das Smarty-Objekt zu instanziieren und den Pfad der Smarty-Vorlagendatei zu konfigurieren.

2 PHP-Code ist im Abschnitt der Smarty-Vorlagendatei zulässig. Alle Kommentare, Variablen und Funktionen müssen innerhalb des Trennzeichens enthalten sein.

A.{}

C. wenn sonst

E

Zurück zum Anfang

6. Sekundäres Entwicklungssystem (DEDE, ecshop):

1. Verständnis der sekundären Entwicklung

Sekundäre Entwicklung bedeutet einfach Anpassen und Ändern vorhandener Software, Erweitern von Funktionen und Erreichen der gewünschten Funktionen. Im Allgemeinen wird der Kern des ursprünglichen Systems nicht geändert.

2. MVC

Modelldatenverarbeitung.

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 und die

Controller-Schicht ist M und V spielen eine regulierende Rolle. Die Controller-Schicht entscheidet, welche Methode welcher Modellklasse aufgerufen werden soll. Nachdem

ausgeführt wurde, entscheidet die Controller-Schicht, welche Ansichtsschicht zugewiesen werden soll Ergebnis zu.

3. Beim Zugriff auf das sekundäre Entwicklungsprogramm nach der Installation werden einige Warnungen und Fehler angezeigt.

Ändern Sie basierend auf den Fehlern die Serverkonfigurationsparameter und Baidu

4. Funktionen, Ersetzen von Vorlagen, Hinzufügen und Ändern von Funktionen

Tatsächlich handelt es sich um die Verwendung objektorientierter Anwendungen, und das Ersetzen von Vorlagen ähnelt der Verwendung von Smarty

5. Welche sekundären Entwicklungsgegenstände wurden verwendet?

Dedecms phpcms ecshop, im Grunde ist es kein Problem, es zu lernen, wenn Sie über eine gute Grundlage verfügen.

6. Ist es besser, eine Primärentwicklung oder eine Sekundärentwicklung wie PHP 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. Übergeben Sie das instanziierte Objekt über globale

8. Wenn dedecms das Verzeichnis ändert, kann ein bestimmtes Element im Hintergrund nicht eingegeben werden . Wie kann man es lösen?

Ändern Sie die Hintergrundkerneinstellungen auf den aktuellen Projektverzeichnisnamen

9. Verstehen Sie das benutzerdefinierte Modell in dedecms?

Im DreamWeaver-System gibt es das Konzept des Inhaltsmodells, mit dem Websites mit unterschiedlichen Inhaltsformen erstellt werden können: 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 Inhalten erstellen Formen.

Es ist gleichbedeutend damit, dass wir die Tabellenstruktur automatisch hinzufügen, um sie an Änderungen der aktuellen Bedürfnisse anzupassen

10 Sie müssen die Konzepte, das Design und die Verwendung von Vorlagen verstehen Die folgenden paar Konzepte

1. Abschnittsvorlage (Cover):

bezieht sich auf die Vorlage, die von der Website-Homepage oder dem Cover-Kanal wichtigerer Spalten verwendet wird. Sie wird im Allgemeinen mit „index_identification ID“ benannt .htm". Darüber hinaus kann der Benutzer für individuell definierte Einzelseiten oder benutzerdefinierte Tags 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 ein generiert wird spezifische Datei.

2. Listenvorlage:

bezieht sich auf die Vorlage für die Liste aller Artikel in einer bestimmten Spalte der Website, die im Allgemeinen mit „list_identification ID.htm“ benannt ist.

3. Dateivorlage:

stellt die Vorlage der Dokumentanzeigeseite dar, z. B. die Artikelvorlage, im Allgemeinen mit „article_identification ID.htm“ benannt.

4. Andere Vorlagen:

Zu den allgemeinen Systemvorlagen gehören: Homepage-Vorlage, Suchvorlage, RSS, JS-Kompilierungsfunktionsvorlage usw. Darüber hinaus können Benutzer auch eine Vorlage anpassen, um beliebige zu erstellen dokumentieren.

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 benutzerdefinierten Funktionsbibliotheken (extend.func.php); Front-End-Eintragsdateien (common.inc.php)

Zurück nach oben

7. Entwicklung der öffentlichen WeChat-Plattform

1. WeChat-Betriebsmechanismus

Welche Sprache wird für die Kommunikation zwischen dem offiziellen Konto und PHP verwendet: Xml

Weixin.php ist So erhalten Sie öffentliche Kontodaten:

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//Daten empfangen XML-Daten

2 . Nachrichtentyp

WeChat bietet derzeit 7 grundlegende Nachrichtentypen, nämlich:

(1) Textnachricht (Text); 🎜>

(3) Stimme (Stimme)

(4) Video (Video)

(5) Standort

(6 ) Linknachricht (Link) ;

(7) Ereignis-Push (Ereignis)

Typ. Beherrschen Sie das Datenübertragungsformat beim Senden verschiedener Nachrichtentypen

4. Die Funktion zum Einlesen der gesamten Datei in eine Zeichenfolge ist

File_get_contents

5. Häufig verwendete Funktionen

Die Funktion, die XML-Daten in Objekte analysiert, ist

simplexml_load_string( )

Die Funktion, die eine Zeichenfolge in ein Array umwandelt, ist ___ explosion_________, und die Funktion, die ein Array in eine Zeichenfolge umwandelt, ist ____implode________.

Die Zeichenfolge, die die URL-Zeichenfolge codiert, ist ____urlencode________.

6. Die Funktion der Sprintf-Funktion

Sie können hierzu im Handbuch nachsehen.

7. Warum kann das offizielle WeChat-Konto keine Dienste bereitstellen?

1. Netzwerkgrund, Datenschnittstellengrund

2. Codefehler, wie man den Grund errät

Überprüfen Sie, wo Sie ihn geändert haben, ob der Code korrekt ist

Sie können die Daten exportieren und einen Blick darauf werfen. Verwenden Sie PHP, um Dateien zu verwalten

$myfile = fopen("newfile.txt", "w");

$txt ="aaaaaaaaaa";

fwrite($myfile, $txt);

fclose($myfile);

Benutzerdefiniertes Menü-Ereignis-Push

Klicken Sie auf

Klicken Sie auf den Sprunglink

Scannen Sie den QR-Code, um das Ereignis zu pushen

Scannen Sie den QR-Code, um es zu pushen und anzuzeigen

Öffnen Sie das System, um Fotos zu machen und Bilder posten

Das Ereignis, das den Absender des WeChat-Fotoalbums anzeigt

Das Ereignis, das die geografische Standortauswahl anzeigt

9 Die Rolle des Tokens

Sicherheitsmechanismusüberprüfung, verwendet für WeChat-Server und PHP-Server. Sicherheitsüberprüfung zwischen
10. Die Rolle von Appid und Secrect

Bei der Anforderung der API-Schnittstelle (z. B. Menübedienung) müssen Sie übergeben appid- und secrect-Werte, um den Anwendungsautorisierungscode zu erhalten

Zurück nach oben

8. Beschreibung der Technologien, die Sie beherrschen:

1 Als leitende Person verfügen Sie über Kenntnisse in der Smarty-Template-Engine, im ThinkPHP-Framework, in der Entwicklung öffentlicher WeChat-Plattformen, in DEDE, in Ecshop und in anderen sekundären Entwicklungssystemen. Sie verfügen über ein gewisses Verständnis für objektorientierte Datenbanken und sind mit PHP vertraut Entwicklung unter Linux

2. Front-End-Technologie: Kenntnisse in p+CSS-Webseitenlayout, Javascript, JQuery-Framework, AJAX-Technologie, Photoshop-Bildverarbeitung

3 , Verwendung von Smarty zur Entwicklung von „XXXXXXXX“, ThinkPHP zur Entwicklung von „XXXXXXXX“ und Verwendung der öffentlichen WeChat-Plattform. Der offizielle Account des „Employment Service Network“ hat das Dreamweaver-System zur Entwicklung von Unternehmenswebsites usw. verwendet.

1. Einer der Hauptvorteile der PHP-Sprache ist die Plattformübergreifendheit. Was 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-Methoden

Unterschiede: 1. Get ruft Daten vom Server ab, Post überträgt Daten an den Server

2. Der von Get übergebene Wert ist im sichtbar URL und Post Unsichtbar in der URL

4. Der von Get übergebene Wert liegt im Allgemeinen innerhalb von 2 KB, und die Größe des per Post übergebenen Werts kann in php.ini

5 festgelegt werden. Die Sicherheit von Get ist nicht niedrig und die Sicherheit von Post Höher, aber die Ausführungseffizienz ist höher als bei Post

Vorschläge:

1 Der Get-Typ ist weniger sicher als der Post-Typ. Es wird empfohlen, den Datenübermittlungstyp „Post“ zu verwenden. Für das Hinzufügen, Ändern oder Löschen wird die Verwendung der „Get“-Methode empfohlen Daten;

Die von Baidu verwendete Get-Methode, da sie aus ihrer URL ersichtlich ist

3. Verstehen Sie, welche Frameworks, Template-Engines, Systeme usw. von PHP

sind Framework: Es gibt viele Frameworks wie Zendframe, CI, Yii usw. Was wir gelernt haben, ist thinkphp

Template Engine: Es gibt auch viele in den Lehrbüchern. Was wir gelernt haben, ist das Smarty

System: Es gibt viele, wie zum Beispiel: Kangsheng-Produkte (uchome, supesite, discuzX usw.), Empire-System, DEDE (Dream Weaver), Ecshop usw., was wir gelernt haben, ist DEDECMS, Ecshop

4. Welche Web-Frontend-Technologien beherrschen Sie?

Kompetent in p+CSS-Webseitenlayout, JavaScript, jQuery-Framework, Photoshop-Bildverarbeitung

5. 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, was den Druck auf den Server verringert und die Benutzererfahrung verbessert

6. zu-eins 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 und verwenden Sie Verifizierungscodes;

Wie kann die Leistung des Programms verbessert werden? 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与MYSQL数据库是最优搭配,当然PHP也可以去其它的数据库搭配使用,例如MSSQL等,PHP中预留了操作MSSQL的函数,只要开启就可以使用

9. 现在编程中经常采取MVC三层结构,请问MVC分别指哪三层,有什么优点?

MVC三层分别指:业务模型、视图、控制器,由控制器层调用模型处理数据,然后将数据映射到视图层进行显示,优点是:①可以实现代码的重用性,避免产生代码冗余;②M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式

10. 对json数据格式的理解?

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,json数据格式固定,可以被多种语言用作数据的传递

PHP中处理json格式的函数为json_decode( string $json [, bool $assoc ] ) ,接受一个 JSON格式的字符串并且把它转换为PHP变量,参数json待解码的json string格式的字符串。assoc当该参数为TRUE时,将返回array而非object;

Json_encode:将PHP变量转换成json格式

14. PHP处理数组的常用函数?(重点看函数的‘参数’和‘返回值’)

①array()创建数组;②count()返回数组中元素的数目;③array_push()将一个或多个元素插入数组的末尾(入栈);④array_column()返回输入数组中某个单一列的值;⑤array_combine()通过合并两个数组来创建一个新数组;⑥array_reverse()以相反的顺序返回数组;⑦array_unique()删除数组中的重复值;⑧in_array()检查数组中是否存在指定的值;

15. PHP处理字符串的常用函数?(重点看函数的‘参数’和‘返回值’)

①trim() entfernt Leerzeichen und andere Zeichen auf beiden Seiten der Zeichenfolge; ②substr_replace() ersetzt einen Teil der Zeichenfolge durch eine andere Zeichenfolge; ④substr_count() zählt, wie oft eine Teilzeichenfolge in der Zeichenfolge vorkommt; ein Teil der Zeichenfolge; ⑤strtoupper() wandelt die Zeichenfolge in Großbuchstaben um; ⑧strrchr() findet die Zeichenfolge in einem anderen Zeichen; string; ⑨ strstr() findet das erste Vorkommen einer Zeichenfolge in einer anderen Zeichenfolge (Groß- und Kleinschreibung beachten); strlen() gibt die Länge der Zeichenfolge zurück; -sensitive); print() gibt einen oder mehrere Strings aus; is_string() erkennt, ob die Variable ein String ist; mb_substr() ist eine Funktion zum Abfangen von Chinesisch und Englisch

16. Häufig verwendete Funktionen für die PHP-Verarbeitungszeit? (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.

microtime() gibt die Anzahl der Mikrosekunden in der aktuellen Zeit 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.

17. 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.

18 Verwendete Funktionen zum Betreiben von Dateien in PHP? (Konzentrieren Sie sich auf die „Parameter“ und den „Rückgabewert“ der Funktion) ②Datei löschen; ④Datei ändern; ⑦Datei erstellen; . Dieses Element wird häufig zum Generieren von Cache- oder statischen Dateien bei der Arbeit verwendet. Bitte lesen Sie es sorgfältig durch.

Was sind die allgemeinen Funktionen von PHP-Betriebsverzeichnissen? (Ordner)? (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

3. Objektorientierter Teil

1. Was ist objektorientiert? (Antwort mit Verständnis)

Antwort: Objektorientierte OO = objektorientierte Analyse OOA + objektorientiertes Design OOD + objektorientierte Programmierung OOP; Eine beliebte Erklärung lautet „Alles ist ein Objekt“. Behandeln Sie alle Dinge als unabhängige Objekte (Einheiten), die ihre eigenen Funktionen erfüllen können, 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: Auf private Mitglieder kann nur innerhalb der Klasse zugegriffen werden.

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

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 gesetzt 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:

Die Kapselung ist die Grundlage dafür, dass Softwarekomponenten eine hervorragende Modularität aufweisen. Ziel der Verpackung ist es, einen hohen Inhalt zu erreichen Softwarekomponenten. Aggregation, geringe Kopplung, Verhinderung der Auswirkungen von Änderungen durch Programmabhängigkeit

Vererbung:

Wenn Sie eine Klasse definieren und implementieren, können Sie dies auf der Grundlage einer vorhandenen Klasse tun. Sie können den von dieser vorhandenen Klasse definierten Inhalt als Ihren eigenen Inhalt verwenden und neue Inhalte hinzufügen oder ändern Die Methode ist besser für besondere Bedürfnisse geeignet, nämlich die 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 der über die Referenzvariable ausgegebene Methodenaufruf nicht während der Programmierung, sondern im Programm bestimmt werden Zur Laufzeit wird bestimmt, dass eine Referenzvariable auf ein Instanzobjekt welcher Klasse zeigt. Der von der Referenzvariable ausgegebene Methodenaufruf ist eine Methode, die in welcher Klasse implementiert ist. Dies 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 einzuteilen. In dieser Klasse werden nur die Ähnlichkeiten und Gemeinsamkeiten dieser Dinge berücksichtigt Ignorieren Sie die Aspekte, die für das aktuelle Thema und Ziel irrelevant sind, und konzentrieren Sie sich auf 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. Wird mit dem Schlüsselwort abstract deklariert.

Es handelt sich um eine spezielle abstrakte Klasse und eine spezielle Klasse, die die Schnittstellendeklaration verwendet.

(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 der abstrakten Klasse, die die Datenkapselung realisieren können, aber die Schnittstelle verfügt nicht über 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) ist genau das Gegenteil des Konstruktors. 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. So überladen Sie die Methode der übergeordneten Klasse mit Beispielen

Antwort: Überladen bedeutet, die Methode der übergeordneten Klasse zu überschreiben, also die Methode zu verwenden In der Unterklasse wird das Ersetzen einer von der übergeordneten Klasse geerbten Methode auch als Methodenüberschreiben bezeichnet.

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 ist lediglich erforderlich, dass die Namen der Methoden gleich sind.

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 -> ;Eigenschaften und Methoden aufrufen.

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 mit dem Schlüsselwort const definieren.

例如:const PI = 3.1415326;

无论是类内还是类外,常量的访问和变量是不一样的,常量不需要实例化对象,

访问常量的格式都是类名加作用域操作符号(双冒号)来调用。

即:类名 :: 类常量名;

12、 作用域操作符::如何使用?都在哪些场合下使用?

答:调用类常量

调用静态方法

13、__autoload()方法的工作原理是什么?

答:使用这个魔术函数的基本条件是类文件的文件名要和类的名字保持一致。

当程序执行到实例化某个类的时候,如果在实例化前没有引入这个类文件,那么就自动执行__autoload()函数。

这个函数会根据实例化的类的名称来查找这个类文件的路径,当判断这个类文件路径下确实存在这个类文件后

就执行include或者require来载入该类,然后程序继续执行,如果这个路径下不存在该文件时就提示错误。

使用自动载入的魔术函数可以不必要写很多个include或者require函数。

返回顶部

四、ThinkPHP部分

1、常见的PHP框架

答:thinkPHP

yii

ZendFramework

CakePhp

sy

2、如何理解TP中的单一入口文件?

答:ThinkPHP采用单一入口模式进行项目部署和访问,无论完成什么功能,一个项目都有一个统一(但不一定是唯一)的入口。应该说,所有项目都是从入口文件开始的,并且所有的项目的入口文件是类似的,入口文件中主要包括:

定义框架路径、项目路径和项目名称(可选)

定义调试模式和运行模式的相关常量(可选)

载入框架入口文件(必须)

 

3、ThinkPHP中的MVC分层是什么?(理解)

答:MVC 是一种将应用程序的逻辑层和表现层进行分离的方法。ThinkPHP 也是基于MVC设计模式的。MVC只是一个抽象的概念,并没有特别明确的规定,ThinkPHP中的MVC分层大致体现在:

模型(M):模型的定义由Model类来完成。

控制器(C):应用控制器(核心控制器App类)和Action控制器都承担了控制器的角色,Action控制器完成业务过程控制,而应用控制器负责调度控制。

视图(V):由View类和模板文件组成,模板做到了100%分离,可以独立预览和制作。

但实际上,ThinkPHP并不依赖M或者V ,也就是说没有模型或者视图也一样可以工作。甚至也不依赖C,这是因为ThinkPHP在Action之上还有一个总控制器,即App控制器,负责应用的总调度。在没有C的情况下,必然存在视图V,否则就不再是一个完整的应用。

总而言之,ThinkPHP的MVC模式只是提供了一种敏捷开发的手段,而不是拘泥于MVC本身。

 

5、如何理解 ThinkPHP 3.0 架构三(核心 + 行为 + 驱动)中的行为?

答:核心 + 行为 + 驱动

TP官方简称为:CBD

核心(Core):就是框架的核心代码,不可缺少的东西,TP本身是基于MVC思想开发的框架。

行为(Behavior) :行为在新版ThinkPHP的架构里面起着举足轻重的作用,在系统核心之上,设置了很多标签扩展位,而每个标签位置可以依次执行各自的独立行为。行为扩展就因此而诞生了,而且很多系统功能也是通过内置的行为扩展完成的,所有行为扩展都是可替换和增加的,由此形成了底层框架可组装的基础。

驱动( Driver ):数据库驱动、缓存驱动、标签库驱动和模板引擎驱动,以及外置的类扩展。

框架,即framework。其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。

 

6、什么是惯例配置?

答:惯例配置上一页下一页惯例重于配置是系统遵循的一个重要思想,系统内置有一个惯例配置文件(位于系统目录下面的Conf\convention.php),按照大多数的使用对常用参数进行了默认配置。所以,对应用项目的配置文件,往往只需要配置和惯例配置不同的或者新增的配置参数,如果你完全采用默认配置,甚至可以不需要定义任何配置文件。

惯例配置文件会被系统自动加载,无需在项目中进行加载。

7、什么是SQL注入?(理解)

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, was eine sicherere Methode ist

(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 die automatische Überprüfung und Autovervollständigungsmechanismen zum benutzerdefinierten Filtern von Anwendungen;

(5) Verwenden Sie Feldtypprüfung, automatische Verifizierung und Autovervollständigungsmechanismen, 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 nur eine Zeile Konstantendefinitionscode zur Eintragsdatei hinzufügen:

//Debugging-Modus aktivieren

define('APP_DEBUG', true);

//Framework-Eintragsdatei laden

require './ThinkPHP/ThinkPHP.php' ;

in Nach Abschluss der Entwicklungsphase und der Bereitstellung in der Produktionsumgebung müssen Sie nur den Definitionscode für den Debugmodus löschen, um in den Bereitstellungsmodus zu wechseln. Nach dem Aktivieren des Debugging-Modus 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, beliebig Fehlerinformationen und Debugging-Informationen werden detailliert aufgezeichnet, um das Debuggen zu erleichtern.

Schalten Sie den Vorlagencache aus. Änderungen an der Vorlage können sofort wirksam werden.

Erfassen Sie SQL-Protokolle, um die SQL-Analyse zu erleichtern

Feld-Caching schließen, Änderungen an Datentabellenfeldern sind vom Caching nicht betroffen.

prüft die Datei-Groß-/Kleinschreibung (auch auf Windows-Plattformen), damit Sie Linux-Bereitstellungsprobleme im Voraus erkennen können können bequem in verschiedenen Phasen des Entwicklungsprozesses verwendet werden, einschließlich aller erforderlichen Situationen wie Entwicklung, Test und Demonstration. Verschiedene Anwendungsmodi können unabhängige Projektkonfigurationsdateien konfigurieren.

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->Gruppe Konfiguration->Erweiterte Konfiguration->Dynamische Konfiguration

Das Obige ist die Ladereihenfolge der Konfigurationsdateien, da die nachfolgende Konfiguration die vorherige Konfiguration mit demselben Namen überschreibt (ohne wirksam zu werden), also die Prioritätsreihenfolge ist 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:

Sie müssen nur die folgende Methode in Aktion aufrufen:

$this->Methodenname („Variablenname“,[„Filtermethode“],[„Standardwert“])

13. Was ist der Unterschied zwischen der D-Funktion und der 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).

Zurück nach oben

5. Smarty Template Engine

1. Was ist der Unterschied zwischen Kompilierung und Caching?

Der Kompilierungsprozess von Smarty besteht darin, die darin enthaltenen Tags durch den entsprechenden PHP-Code zu ersetzen. Tatsächlich handelt es sich um den Prozess des Mischens von PHP und HTML

Smartys Cache muss manuell aktiviert werden, um die kompilierte Datei auszuführen und gleichzeitig eine statische HTML-Seite zu generieren Die HTML-Datei ist also effizienter.

2. Was sind die Vorteile von Smarty?

Smarty ist eine PHP-Template-Engine In PHP geschrieben, besteht der Zweck 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, und wenn der Künstler die Seite erneut ändert, wird dies der Fall sein Dies hat keinen Einfluss auf die Programmlogik des Programms. Dies ist besonders wichtig bei der Zusammenarbeit mit mehreren Personen. (Es ist auch einfach, Multi-Style-Programme 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 Caching-Technologie: Die HTML-Datei, die der Benutzer schließlich sieht, kann in einer statischen HTML-Seite zwischengespeichert werden.

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 sind wie bei der Bestandsanzeige häufige Datenaktualisierungen erforderlich. 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 wie beim Zugriff auf $_GET[page]

{ in a PHP-Skript smarty.cookies.}

{smarty.post.}

{smarty.session.}

{smarty.server.}

4. 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. Sie müssen nicht von PHP zugewiesen werden , kann der Wert der Konstante direkt ausgegeben werden, solange die Variable über {$smarty} beibehalten wird. Beispiel für die Ausgabe von Konstanten in Vorlagen:

{$smarty.const._MY_CONST_VAL}

{$smarty.const.__FILE__}

5 Modifikator

{$var|modifier1|modifier2|.....}

<{$str} >

<{$str|capitalize}><{*Der erste Buchstabe wird großgeschrieben*}>

<{$str|upper }>< ;{*alle Großbuchstaben*}>

<{$str|lower}><{*alle Kleinbuchstaben*}>
;{$str|lower|upper}><{*alle Großbuchstaben, angepasst von links nach rechts*}>

<{$leg|truncate}> ;<{ *String-Interception, Standard 80 Zeichen*}>

<{$leg|truncate:10}><{*String-Interception, erste 10 Zeichen, einschließlich... drei Zeichen *}>

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 der PHP-Datei, um die Kodierung zu bestimmen

7. Caching-Mechanismus

Wenn das Caching aktiviert ist, generiert smarty gleichzeitig eine statische HTML-Seite, wenn diese nicht innerhalb der festgelegten Zeit abläuft. Wenn Sie es erneut besuchen, wird die Seite, die Sie besucht haben, als HTML-Datei angezeigt, wodurch die Notwendigkeit, die Datenbank zu lesen, verringert wird, sodass die Effizienz höher ist.

8. Smarty-Zuweisungs- und Ladevorlage

$Smarty->assign(name,value)

$Smarty->display (' index.html')

9. Wozu dient die Smarty-Template-Technologie?

Um PHP und HTML zu trennen, sollten Künstler und Programmierer ihre eigenen Aufgaben erfüllen, ohne sich gegenseitig zu stören.

10. Was sind die Hauptkonfigurationen von smarty?

1. Führen Sie smarty.class.php ein;

Instanziieren Sie das Smarty-Objekt.

Ändern Sie den Standardvorlagenpfad erneut.

4. Ändern Sie den Standardpfad für die kompilierte Datei erneut.

6.

7. Sie können festlegen, ob der Cache aktiviert werden soll.

8. Sie können die linken und rechten 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 mit vom PHP-Code getrennt.

Auf diese Weise können Programmierer und Künstler ihre Aufgaben erfüllen, ohne sich gegenseitig zu stören.

12. Achten Sie bei der Verwendung von smarty auf folgende Punkte:

1. Es ist hauptsächlich erforderlich, das Smarty-Objekt zu instanziieren und den Pfad der Smarty-Vorlagendatei zu konfigurieren.

2 PHP-Code ist im Abschnitt der Smarty-Vorlagendatei zulässig. Alle Kommentare, Variablen und Funktionen müssen innerhalb des Trennzeichens enthalten sein.

A.{}

C. wenn sonst

E

Zurück zum Anfang

6. Sekundäres Entwicklungssystem (DEDE, ecshop):

1. Verständnis der sekundären Entwicklung

Sekundäre Entwicklung bedeutet einfach Anpassen und Ändern vorhandener Software, Erweitern von Funktionen und Erreichen der gewünschten Funktionen. Im Allgemeinen wird der Kern des ursprünglichen Systems nicht geändert.

2. MVC

Modelldatenverarbeitung.

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 und die

Controller-Schicht ist M und V spielen eine regulierende Rolle. Die Controller-Schicht entscheidet, welche Methode welcher Modellklasse aufgerufen werden soll. Nachdem

ausgeführt wurde, entscheidet die Controller-Schicht, welche Ansichtsschicht zugewiesen werden soll Ergebnis zu.

3. Beim Zugriff auf das sekundäre Entwicklungsprogramm nach der Installation werden einige Warnungen und Fehler angezeigt.

Ändern Sie basierend auf den Fehlern die Serverkonfigurationsparameter und Baidu

4. Funktionen, Ersetzen von Vorlagen, Hinzufügen und Ändern von Funktionen

Tatsächlich handelt es sich um die Verwendung objektorientierter Anwendungen, und das Ersetzen von Vorlagen ähnelt der Verwendung von Smarty

5. Welche sekundären Entwicklungsgegenstände wurden verwendet?

Dedecms phpcms ecshop, im Grunde ist es kein Problem, es zu lernen, wenn Sie über eine gute Grundlage verfügen.

6. Ist es besser, eine Primärentwicklung oder eine Sekundärentwicklung wie PHP 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. Übergeben Sie das instanziierte Objekt über globale

8. Wenn dedecms das Verzeichnis ändert, kann ein bestimmtes Element im Hintergrund nicht eingegeben werden . Wie kann man es lösen?

Ändern Sie die Hintergrundkerneinstellungen auf den aktuellen Projektverzeichnisnamen

9. Verstehen Sie das benutzerdefinierte Modell in dedecms?

Im DreamWeaver-System gibt es das Konzept des Inhaltsmodells, mit dem Websites mit unterschiedlichen Inhaltsformen erstellt werden können: 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 Inhalten erstellen Formen.

Es ist gleichbedeutend damit, dass wir die Tabellenstruktur automatisch hinzufügen, um sie an Änderungen der aktuellen Bedürfnisse anzupassen

10 Sie müssen die Konzepte, das Design und die Verwendung von Vorlagen verstehen Die folgenden paar Konzepte

1. Abschnittsvorlage (Cover):

bezieht sich auf die Vorlage, die von der Website-Homepage oder dem Cover-Kanal wichtigerer Spalten verwendet wird. Sie wird im Allgemeinen mit „index_identification ID“ benannt .htm". Darüber hinaus kann der Benutzer für individuell definierte Einzelseiten oder benutzerdefinierte Tags 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 ein generiert wird spezifische Datei.

2. Listenvorlage:

bezieht sich auf die Vorlage für die Liste aller Artikel in einer bestimmten Spalte der Website, die im Allgemeinen mit „list_identification ID.htm“ benannt ist.

3. Dateivorlage:

stellt die Vorlage der Dokumentanzeigeseite dar, z. B. die Artikelvorlage, im Allgemeinen mit „article_identification ID.htm“ benannt.

4. Andere Vorlagen:

Zu den allgemeinen Systemvorlagen gehören: Homepage-Vorlage, Suchvorlage, RSS, JS-Kompilierungsfunktionsvorlage usw. Darüber hinaus können Benutzer auch eine Vorlage anpassen, um beliebige zu erstellen dokumentieren.

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 benutzerdefinierten Funktionsbibliotheken (extend.func.php); Front-End-Eintragsdateien (common.inc.php)

Zurück nach oben

7. Entwicklung der öffentlichen WeChat-Plattform

1. WeChat-Betriebsmechanismus

Welche Sprache wird für die Kommunikation zwischen dem offiziellen Konto und PHP verwendet: Xml

Weixin.php ist So erhalten Sie öffentliche Kontodaten:

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//Daten empfangen XML-Daten

2 . Nachrichtentyp

WeChat bietet derzeit 7 grundlegende Nachrichtentypen, nämlich:

(1) Textnachricht (Text); 🎜>

(3) Stimme (Stimme)

(4) Video (Video)

(5) Standort

(6 ) Linknachricht (Link) ;

(7) Ereignis-Push (Ereignis)

Typ. Beherrschen Sie das Datenübertragungsformat beim Senden verschiedener Nachrichtentypen

4. Die Funktion zum Einlesen der gesamten Datei in eine Zeichenfolge ist

File_get_contents

5. Häufig verwendete Funktionen

Die Funktion, die XML-Daten in Objekte analysiert, ist

simplexml_load_string( )

将字符串转换为数组的函数是___ explode_________,将数组转化为字符串的函数是____implode________.

编码 URL 字符串的字符串是____urlencode________.

6. Sprintf函数的作用

  这个都是可以查手册的。

7. 微信公众号出现无法提供服务的原因?

   1. 网络原因 ,数据接口原因

2. 代码错误,怎么推测原因

       修改的哪里检查一下,如果代码没错

    可以输出数据 看一下。用php操作文件

 

    $myfile = fopen("newfile.txt", "w");

    $txt ="aaaaaaaaaa";

    fwrite($myfile, $txt);

    fclose($myfile);

 

8.  自定义菜单的事件推送

       单击

       单击跳转链接

       扫码推事件

       扫码推且弹出

       弹出系统拍照发图的事件

       弹出微信相册发图器的事件

       弹出地理位置选择器的事件

9.token的作用

   安全机制验证,用于微信服务器与PHP服务器之间的安全验证
10. Appid与secrect的作用

   请求api接口(例如菜单的操作)时需要传appid与secrect两个值,用来获取应用的授权码  

返回顶部

八、对于自身掌握的技术描述:

1. 以PHP+MYSQL为方向,熟练掌握smarty模板引擎、ThinkPHP框架、微信公众平台开发、DEDE、ecshop等二次开发系统,对面向对象有一定的理解;数据库方面,熟练掌握MYSQL、MSSQL等数据库;熟悉在linux下的PHP开发

2. 前端技术:熟练掌握p+CSS网页布局,javascript,JQuery框架、AJAX技术、photoshop图片处理

3. 一年的项目开发经验,使用smarty开发过‘XXXXXXXX’,ThinkPHP开发过‘XXXXXXXX’,使用微信公众平台开发过‘就业服务网’的公众号,使用织梦系统开发过企业站等。

Das obige ist der detaillierte Inhalt vonTeilen der wichtigsten PHP-Interviewfragen (1). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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