Heim > php教程 > PHP开发 > Hauptteil

Demonstration der fortschrittlichen PHP-OOP-Technologie

黄舟
Freigeben: 2016-12-14 13:32:02
Original
1199 Leute haben es durchsucht

Serialisierung
PHP unterstützt keine persistenten Objekte. In OOP ist ein persistentes Objekt ein Objekt, das den Status und die Funktionalität zwischen Referenzen in mehreren Anwendungen beibehalten kann. Dies bedeutet, dass das Objekt in einer Datei oder Datenbank gespeichert werden kann. Die Möglichkeit, das Objekt später zu laden. Dies ist der sogenannte Serialisierungsmechanismus. PHP verfügt über eine Serialisierungsmethode, die für ein Objekt aufgerufen werden kann, und die Serialisierungsmethode kann eine Zeichenfolgendarstellung des Objekts zurückgeben. Allerdings speichert die Serialisierung nur die Mitgliedsdaten des Objekts und nicht die Methoden.
Wenn Sie in PHP4 das Objekt in die Zeichenfolge $s serialisieren, dann das Objekt freigeben und es dann
in $obj deserialisieren, können Sie die Methoden des Objekts weiterhin verwenden! Ich empfehle dies nicht, da (a) es in der Dokumentation keine Garantie dafür gibt, dass dieses Verhalten auch in zukünftigen Versionen weiterhin funktioniert. (b) Dies kann zu Missverständnissen führen, wenn Sie eine serialisierte Version auf der Festplatte speichern und das Skript beenden. Wenn Sie dieses Skript später ausführen, können Sie nicht erwarten, dass beim Deserialisieren eines Objekts die Methoden des Objekts vorhanden sind, da die Zeichenfolgendarstellung überhaupt keine Methoden enthält.
Kurz gesagt ist die Serialisierung in PHP sehr nützlich zum Speichern von Mitgliedsvariablen von Objekten. (Sie können auch verwandte Arrays und Arrays in eine Datei serialisieren.)
Beispiel:

Kopieren Sie den Code wie folgt:
<?php
$obj=new Classfoo();
$str=serialize($obj>); / Speichern Sie $str auf der Festplatte
//Ein paar Monate später
//Laden Sie str von der Festplatte

$obj2=unserialize($str)

Sie haben die Daten der Mitglieder wiederhergestellt , aber keine Methoden (laut Dokumentation). Dies ergibt die einzige Möglichkeit, auf Mitgliedsvariablen zuzugreifen (Sie haben keine andere Möglichkeit!), indem Sie beispielsweise $obj2->x verwenden. Probieren Sie es also nicht zu Hause aus.

Es gibt einige Möglichkeiten, dieses Problem zu lösen. Ich lasse sie weg, weil sie für diesen prägnanten Artikel zu schlecht sind. Ich würde mich über vollständig serialisierte Funktionen in nachfolgenden PHP-Versionen freuen.
Klassen zur Datenspeicherung verwenden Eines der großartigen Dinge an PHP und OOP ist, dass Sie ganz einfach eine Klasse definieren können, um etwas zu bearbeiten, und die entsprechende Klasse jederzeit aufrufen können, wenn Sie sie verwenden möchten. Angenommen, Sie verfügen über ein HTML-Formular, das es dem Benutzer ermöglicht, ein Produkt auszuwählen, indem er die Produkt-ID-Nummer auswählt. Die Datenbank enthält Produktinformationen und Sie möchten das Produkt, seinen Preis usw. anzeigen. Sie haben unterschiedliche Arten von Produkten und die gleiche Aktion kann für verschiedene Produkte unterschiedliche Bedeutungen haben. Beispielsweise kann die Anzeige eines Tons bedeuten, dass er abgespielt wird, bei anderen Arten von Produkten kann es jedoch bedeuten, dass ein in einer Datenbank gespeichertes Bild angezeigt wird. Sie können OOP oder PHP verwenden, um den Codierungsaufwand zu reduzieren und die Qualität zu verbessern.
Definieren Sie eine Produktklasse, definieren Sie die Methoden, die sie haben soll (z. B. Anzeige), und definieren Sie dann
Klassen für jeden Produkttyp, abgeleitet von der Produktklasse (SoundItem-Klasse, ViewableItem-Klasse usw. usw.). ), überschreiben Sie die Methoden in der Produktklasse, damit sie Ihren Vorstellungen entsprechend agieren.
Benennen Sie die Klasse entsprechend dem Typfeld jedes Produkts in der Datenbank. Eine typische Produkttabelle kann Felder (ID, Typ, Preis, Beschreibung usw.) enthalten. Anschließend können Sie sie im Verarbeitungsskript abrufen den Typwert aus der Datenbank und instanziieren ein Objekt mit dem Namen type:

Kopieren Sie den Code wie folgt:

<?php
$obj=new $type(
$obj-> ;action();

Dies ist eine sehr gute Funktion von PHP. Sie können die Anzeigemethode oder andere Methoden von $obj aufrufen, ohne den Objekttyp zu berücksichtigen. Mit dieser Technik müssen Sie das Skript nicht ändern, um einen neuen Objekttyp hinzuzufügen, sondern nur eine Klasse, die damit umgeht.

Diese Funktion ist sehr leistungsstark. Definieren Sie einfach Methoden, ohne die Typen aller Objekte zu berücksichtigen, implementieren Sie sie in verschiedenen Klassen in verschiedenen Methoden und verwenden Sie sie dann für jedes Objekt im Hauptskript, nein if...else , keine Notwendigkeit für zwei Programmierer,
einfach glücklich.
Nun stimmen Sie zu, dass die Programmierung einfach, die Wartung kostengünstig und die Wiederverwendbarkeit wahr ist?
Wenn Sie eine Gruppe von Programmierern leiten, ist es sehr einfach, die Arbeit zu verteilen. Jede Person kann für einen Objekttyp und
die Klasse verantwortlich sein, die damit umgeht.
Durch diese Technologie kann eine Internationalisierung erreicht werden. Wenden Sie einfach die entsprechende Klasse entsprechend dem vom Benutzer ausgewählten Sprachfeld usw. an.
Kopieren und Klonen
Wenn Sie ein Objekt von $obj erstellen, können Sie das Objekt mit $obj2=$obj kopieren. Das neue Objekt ist eine Kopie von $obj (keine Referenz), also hat es $ The Zustand des Objekts zu diesem Zeitpunkt. Manchmal möchten Sie dies nicht tun. Sie möchten einfach nur ein neues Objekt wie die obj-Klasse generieren. Sie können den Konstruktor der Klasse aufrufen, indem Sie die new-Anweisung verwenden. Dies kann auch in PHP durch Serialisierung und eine Basisklasse erreicht werden, alle anderen Klassen müssen jedoch von der Basisklasse abgeleitet werden.
Betreten der Gefahrenzone
Wenn Sie ein Objekt serialisieren, erhalten Sie eine Zeichenfolge in einem bestimmten Format. Wenn Sie interessiert sind, können Sie nachforschen, wo in der Zeichenfolge der Name der Klasse steht ( großartig!), Sie können es wie folgt herausnehmen:

Kopieren Sie den Code wie folgt:
<?php
$herring=serialize($obj);
$vec=explode(':',$herring);
$nam=str_replace ( "",'',$vec[2]);

Angenommen, Sie erstellen eine „Universum“-Klasse und erzwingen, dass alle Klassen vom Universum aus erweitert werden, können Sie eine Klonmethode wie folgt definieren:

Code wie folgt kopieren:
<?php
function clone() {
$herring=serialize($this);
$vec=explode (':',$ hering);
$nam=str_replace(""",'',$vec[2]);
$ret=new $nam;
return $ret;
}
}
//Dann
$obj=new Something();
//Expand from Universe
$other=$obj->clone();

Was Sie bekommen, ist ein neues Objekt der Something-Klasse, das mit dem Objekt identisch ist, das durch die Verwendung der neuen Methode und den Aufruf des Konstruktors erstellt wurde. Ich weiß nicht, ob das für Sie funktionieren wird, aber es ist eine gute Faustregel, dass die Universumsklasse den Namen der abgeleiteten Klasse kennt. Der Fantasie sind keine Grenzen gesetzt.
Diese Anweisung dient zum Schreiben der aktuellen Uhrzeit.

Weitere verwandte Artikel finden Sie auf der chinesischen PHP-Website (m.sbmmt.com)!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage