Inhaltsverzeichnis
Alles serialisieren" >Alles serialisieren
1.serialize(object name)" >1.serialize(object name)
2 .unserialize (Rückgabewert nach Serialisierung)" >2 .unserialize (Rückgabewert nach Serialisierung)
Teilweise Serialisierung" > Teilweise Serialisierung
1.sleep()" >1.sleep()
2.wakeup()" >2.wakeup()
Heim Backend-Entwicklung PHP-Tutorial PHP objektorientiert – detaillierte Code-Erklärung der Objektserialisierung serialize(), __sleep(), __wakeup()

PHP objektorientiert – detaillierte Code-Erklärung der Objektserialisierung serialize(), __sleep(), __wakeup()

Mar 27, 2017 am 09:43 AM

Manchmal ist es notwendig, ein Objekt in das Netzwerk hochzuladen und zu übertragen. Um die Übertragung zu erleichtern, kann das gesamte Objekt in eine Binärzeichenfolge umgewandelt und dann wiederhergestellt werden Wenn es am anderen Ende des Objekts ankommt, nennt man diesen Vorgang Serialisierung (auch Serialisierung genannt), genau wie wir jetzt ein Auto per Schiff in die USA transportieren wollen, da das Auto relativ groß ist, können wir es zerlegen Wir zerlegen das Auto in kleinere Teile, und dann transportieren wir diese Teile per Rad in die Vereinigten Staaten und bauen sie dann wieder in das Auto ein.
Laienhaft ausgedrückt ist Serialisierung eine Methode, die durch eine Variable dargestellten „Speicher“-Daten in eine „String“-Datenform umzuwandeln und sie während der Deserialisierung auf der Festplatte beizubehalten. Es handelt sich um einen umgekehrten Prozess.
Es gibt zwei Situationen, in denen wir Objekte serialisieren müssen. Die erste Situation ist, wenn ein Objekt über das Netzwerk übertragen wird, und die zweite Situation ist, wenn das Objekt in eine Datei oder Datenbank geschrieben wird.
Bei der Serialisierung gibt es zwei Prozesse, bei denen es sich um die Konvertierung eines Objekts in eine Binärzeichenfolge handelt, und bei dem anderen um die Deserialisierung (auch Deserialisierung genannt). die vom Objekt in ein Objekt umgewandelte Binärzeichenfolge. Wir verwenden die Funktion unserialize(), um ein Objekt zu deserialisieren.
Der Parameter der Funktion serialize() in PHP ist der Objektname und der Rückgabewert ist eine Zeichenfolge. Die von Serialize() zurückgegebene Zeichenfolge hat im Allgemeinen keine Analyse, um die Objektinformationen zu erhalten Wir müssen nur zurückgeben. Diese Zeichenfolge kann an das andere Ende des Netzwerks übertragen oder in einer Datei gespeichert werden.
Die Funktion unserialize() wird zum Deserialisieren von Objekten verwendet. Der Parameter dieser Funktion ist der Rückgabewert der Funktion serialize(). Die Ausgabe ist natürlich das reorganisierte Objekt.
 
Serialisierung von Objekten:

  1. Die Serialisierung eines Objekts kann nur seine Attributdaten „speichern“, und die Methode ist Ignorieren (Methode ist keine Daten). )

  2. Wenn ein Objekt serialisiert wird, wird die magische Methode der Klasse, zu der das Objekt gehört, automatisch aufgerufen: sleep()

Deserialisierung von Objekten:

  1. Bei der Deserialisierung eines Objekts handelt es sich tatsächlich um die ursprünglich während der Wiederherstellungsphase gespeicherten Attributdaten, auf die Sie sich zu diesem Zeitpunkt verlassen müssen Die ursprüngliche Klasse des Objekts .

  2. Wenn ein Objekt deserialisiert wird, wird die magische Methode der Klasse, zu der das Objekt gehört, automatisch aufgerufen: wakeup()

Alles serialisieren

1.serialize(object name)

Serialisiert das angegebene Klassenobjekt $str =serialize($per) // Das Per-Objekt serialisieren und das Ergebnis an $str zurückgeben
 
Serialisierungsmethode:

$v1 = 123; //这是一个变量,代表任意的内存数据$s1 = serialize( $v1 );  //将任何类型的变量数据,转换为“字符串”
file_put_contents( '要保存的目标文本文件', $s1 );    //将该字符串,保存到一个文件里(就是硬盘数据)
Nach dem Login kopieren

2 .unserialize (Rückgabewert nach Serialisierung)

Deserialisierung, das Rückgabeergebnis ist ein Objekt $per=unserialize($str);

Deserialisierungsmethode:

$s1 = file_get_contens( '保存序列化数据的目标文本文件' );    //从一个文件里读出其中的所有字符
$v1 = unserialize($s1);   //将该字符串数据,反序列化转换为变量(数据)
Nach dem Login kopieren

Beispiele für Serialisierung und Deserialisierung

<?phpclass Person{
    var $name;   
    var $sex;    
    var $age;    

    function construct($name = "", $sex = "", $age = "") {
        $this->name = $name;        
        $this->sex = $sex;        
        $this->age = $age;
    }    function say() {
        echo "我的名字叫:" . $this->name . " 性别:" . $this->sex . " 我的年龄是:" . $this->age . "<br>";
    }
}$p1 = new Person("张三", "男", 20);$p1_string = serialize($p1);    //把一个对象串行化,返一个字符串
echo $p1_string . "<br>";        
//串行化的字符串我们通常不去解析//将$p1_string存储到文件file.txt中file_put_contents(&#39;./file.txt&#39;, $p1_string);
$p2 = unserialize($p1_string);    //把一个串行化的字符串反串行化形成对象
$p2$p2->say();//下面的做法和上面效果一样
$p3_file = file_get_contents(&#39;./file.txt&#39;); //读取文件
$p3 = unserialize($p3_file); //反序列化
$p3->say();?>
Nach dem Login kopieren

Die Ausgabe des obigen Beispiels:

O:6:"Person":3:{s:4:"name";s:4:"张三";s:3:"sex";s:2:"男";s:3:"age";i:20;}我的名字叫:张三 性别:男 我的年龄是:20
Nach dem Login kopieren

Teilweise Serialisierung

1.sleep()

Serialisieren Sie einige Attribute eines Objekts.

2.wakeup()

Initialisieren (tatsächlich ändern) Sie beim Deserialisieren den Objektinhalt
In PHP5 gibt es Die beiden Magie Methoden: Sleep()-Methode und Wakeup()-Methode. Wenn das Objekt serialisiert wird, wird eine Sleep()-Methode aufgerufen, um einige Dinge vor dem Schlafengehen abzuschließen, und wenn es wieder aufwacht, wird eine Binärzeichenfolge neu gebildet. Objekt wird automatisch eine weitere PHP-Funktion wakeup() aufgerufen, um einige Aktionen auszuführen, die das Objekt ausführen wird, wenn es aufwacht. Die Funktion „sleep()“ akzeptiert keine Parameter, sondern gibt ein Array zurück, das die Eigenschaften enthält, die serialisiert werden müssen. Nicht enthaltene Attribute werden bei der Serialisierung ignoriert. Wenn keine Sleep()-Methode vorhanden ist, speichert PHP alle Attribute.

<?class Person{

    var $name;   
    var $sex;    
    var $age;    

    function construct($name = "", $sex = "", $age = "") {
        $this->name = $name;        
        $this->sex = $sex;        
        $this->age = $age;
    }    function say() {
        echo "我的名字叫:" . $this->name . " 性别:" . $this->sex . " 我的年龄是:" . $this->age . "<br>";
    }    //指定串行化时把返回的数组中$name和$age值串行化,忽略没在数组中的属性$sex
    function sleep() {
        $arr = array("name", "age"); // 此时,属性$sex将被删除!!!

        return($arr);
    }    //重新生成对象时,并重新赋值$age为40
    function wakeup() {
        $this->age = 40;
    }
}$p1 = new Person("张三", "男", 20);//把一个对象串行化,返一个字符串,调用了sleep()方法,忽略没在数组中的属性
$sex$p1_string = serialize($p1);
echo $p1_string . "<br>"; //串行化的字符串我们通常不去解析
$p2 = unserialize($p1_string); //反串行化形成对象$p2重新赋值
$age为40
$p2->say();?>
Nach dem Login kopieren

Die Ausgabe des obigen Beispiels ist:

O:6:"Person":2:{s:4:"name";s:4:"张三";s:3:"age";i:20;}我的名字叫:张三 性别: 我的年龄是:40
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonPHP objektorientiert – detaillierte Code-Erklärung der Objektserialisierung serialize(), __sleep(), __wakeup(). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

7 PHP-Funktionen, die ich leider vorher nicht kannte 7 PHP-Funktionen, die ich leider vorher nicht kannte Nov 13, 2024 am 09:42 AM

Wenn Sie ein erfahrener PHP-Entwickler sind, haben Sie möglicherweise das Gefühl, dass Sie dort waren und dies bereits getan haben. Sie haben eine beträchtliche Anzahl von Anwendungen entwickelt, Millionen von Codezeilen debuggt und eine Reihe von Skripten optimiert, um op zu erreichen

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Wie analysiert und verarbeitet man HTML/XML in PHP? Wie analysiert und verarbeitet man HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge Feb 07, 2025 pm 12:12 PM

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Erklären Sie die späte statische Bindung in PHP (statisch: :). Erklären Sie die späte statische Bindung in PHP (statisch: :). Apr 03, 2025 am 12:04 AM

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Was sind PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Apr 03, 2025 am 12:03 AM

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.

See all articles