In PHP 4 wird var normalerweise zum Deklarieren von Variablen verwendet, während Sie in PHP 5 die Funktionen der objektorientierten Programmierung (OOP) verwenden können, um die Sichtbarkeit von Daten anzupassen – also die Zugänglichkeit, mit der die Sichtbarkeit zusammenhängt Variablen sind sehr ähnlich, bieten jedoch einen besseren Kontrollmechanismus mit den folgenden drei Arten von Sichtbarkeitsmodifikatoren:
Öffentlich (Standard) – Auf Variablen kann im globalen Bereich zugegriffen oder sie geändert werden.
Geschützt – Auf Variablen kann nur innerhalb der Klasse selbst und direkt abgeleiteter Klassen (mithilfe der Extens-Anweisung) zugegriffen oder diese geändert werden.
Privat – Auf Variablen kann nur innerhalb der Klasse zugegriffen oder sie geändert werden.
Ähnlich wie bei der Schnittstellenimplementierung führt ein Verstoß gegen diese Regeln im Programm zu schwerwiegenden Fehlern, und ähnlich wie bei Schnittstellen dienen sie ausschließlich der Bequemlichkeit der Programmierer. Dies bedeutet jedoch nicht, dass sie ignoriert werden können. Durch die Angabe der Sichtbarkeit einer bestimmten Klassenmitgliedsvariablen können die Daten innerhalb des Objekts vor äußeren Einflüssen geschützt werden.
Angenommen, es gibt eine MySqlDB-Klasse, in der eine $link-Variable als privat deklariert ist, was bedeutet, dass auf diese Variable nur innerhalb des Objekts mit der $this-Variablen zugegriffen werden kann. Dies verhindert ein versehentliches Überschreiben durch andere Objekte oder Funktionen Außerhalb der Klasse verwenden wir hier das Sichtbarkeitsattribut, um ein Abfrageobjekt zu erstellen.
Sie können eine Abfrage als separate Entität behandeln, die ausgeführt werden kann und Ergebnisse zurückgibt. Einige Datenbanksysteme verfügen auch über gespeicherte Prozeduren, die Abfrageanweisungen speichern und beim Aufruf entsprechende Parameter akzeptieren. Allerdings stellte MySQL vor Version 5.1 keine ähnlichen Funktionen bereit.
In diesem Artikel werden die beiden oben genannten Funktionen im Abfrageobjekt des Beispiels kombiniert. Das Beispiel simuliert eine grundlegende gespeicherte Prozedur und speichert den Ergebniszeiger intern. Im Moment liegt der Schwerpunkt auf der Ausführung der Abfrage vom Objekt aus, wobei Sie die Funktion query() des MySqlDB-Objekts aufrufen können.
Die folgenden öffentlichen Funktionen können im Abfrageobjekt definiert werden:
__construct() – Der Konstruktor akzeptiert einen Parameter, der eine Instanzreferenz des Objekts enthält, das die DB-Schnittstelle implementiert.
Prepare() – Die Funktion Prepare() initialisiert die gespeicherte Abfrageprozedur. Es kann einen oder mehrere begrenzte Platzhalter enthalten, die als Parameter an die Funktionexecute() übergeben werden. Ein Platzhalter ist als Doppelpunkt definiert, der sich auf die Anzahl der Parameter bezieht, gefolgt von einer Ganzzahl und einem Buchstaben, der sich auf den Parametertyp bezieht.
Eine einfache Abfrage mit Platzhaltern sieht so aus:
SELECT col1,col2 FROM table_name WHERE col1=:1I
execute() – Die Funktionexecute() führt die Abfrage aus. Wenn es durch die Funktion Prepare() vorzeitig als gespeicherte Prozedur initialisiert wird, werden alle übergebenen Parameter als Ausführungsparameter der gespeicherten Prozedur verwendet. Andernfalls wird der erste Parameter nur als Abfragetext verwendet. Die Funktionexecute() gibt die Ergebnisse zurück, nachdem die Abfrage ausgeführt wurde.
Compile() – Die Funktion „compile()“ ähnelt der Funktion „execute()“. Tatsächlich wird die Abfrage nicht ausgeführt, sondern ersetzt alle Platzhalter in der Abfragezeichenfolge und akzeptiert die Parameter der gespeicherten Prozedur und gibt eine kompilierte Version der Abfrage zurück.
Geschützte Mitglieder
Wie oben erwähnt, kann das Konzept der Sichtbarkeit verwendet werden, um das Innenleben eines Objekts zu verbergen und die für das Innenleben erforderliche Datenintegrität zu schützen. Wie bereits erläutert, wird der von der Abfrage zurückgegebene Ergebniszeiger als geschütztes Attribut gespeichert. Das geschützte Mitglied wird hier verwendet, da ein bestimmtes Datenbankabfrageobjekt, das vom Abfrageobjekt abgeleitet wird, einige Kernfunktionen überlasten kann.
Eintauchen in den Code
Genug der Theorie, jetzt beginnen wir mit dem Schreiben von Code. Erstellen Sie zunächst eine Vorlage wie in Beispiel 1 gezeigt:
Beispiel 1: Eine Datenbankabfrage Klassenvorlage
class DBQuery { /** *保存一个实现了DB接口对象的引用。 */ protected $db; /** *如果是一个存储过程,设为true。 */ protected $stored_procedure = false; /** *保存一个删除了所有字符串的query。 */ private $query; /** *用于在SQL中匹配引号。 */ private static $QUOTE_MATCH = "/(".*(?db = $db; } public function prepare($query) { $this->stored_procedure = true; } public function compile($args) {} public function execute($query) {} }
Das Obige ist der Inhalt der Verwendung der OOP-Funktionen von PHP zum Erreichen des Datenschutzes (1) Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!