Heim  >  Artikel  >  Backend-Entwicklung  >  Wie bezieht sich PHP auf das Objektmodell? Ausführliche Erläuterung spezifischer zitierter Beispiele

Wie bezieht sich PHP auf das Objektmodell? Ausführliche Erläuterung spezifischer zitierter Beispiele

伊谢尔伦
伊谢尔伦Original
2017-07-08 09:47:131531Durchsuche

PHP verfügt über ein einzelnes vererbtes Objektmodell , das überlasten kann . Darüber hinaus unterstützt PHP Einschränkungen für Attribute und Methoden , die Sie deklarieren können Mitglieder als privat, wodurch der Zugriff von externen Klassen nicht zugelassen wird.

Das Objektmodell von PHP behandelt Objekte wie alle anderen Datentypen Anders und wird als Referenz übergeben. Das referenzbasierte Objektmodell wird am Ende dieses Kapitels ausführlich erläutert. Es handelt sich um die am weitesten fortgeschrittenen neuen Funktionen.

Mit einem direkteren Objektmodell gibt es zusätzliche Vorteile: höhere Effizienz, weniger Speicherverbrauch und größere Flexibilität

In PHP hat das Skript das Objekt standardmäßig kopiert PHP verschiebt nur das Handle, was weniger Zeit in Anspruch nimmt, da unnötiges Kopieren vermieden wird, es aber auch zu einer Steigerung der Ausführungseffizienz führt Weniger Speicher und mehr Speicher für andere Operationen, was auch die Effizienz verbessert. Eine erfreuliche Entwicklung besteht darin, eine Klassenmethode auszuführen, bevor das Objekt zerstört wird für die Speichernutzung, sodass PHP klar erkennen kann, wann keine Verweise auf das Objekt vorhanden sind, und den frei gewordenen Speicher anderen Verwendungszwecken zuweisen kann

Ergänzung:

Speicherverwaltung von PHP5

Objektübergabe

PHP5 verwendet Zend Engine II und Objekte werden in unabhängigen Strukturen
Object
Store gespeichert, anstatt wie andere allgemeine Variablen in Zval gespeichert zu werden (in PHP4 werden Objekte wie in Zval gespeichert). allgemeine Variablen). In Zval wird nur der Zeiger des Objekts gespeichert und nicht der Inhalt (Wert). Wenn wir ein Objekt kopieren oder ein Objekt als Parameter an eine Funktion übergeben, müssen wir die Daten nicht kopieren. Behalten Sie einfach den gleichen Objektzeiger bei und lassen Sie einen anderen zval den Objektspeicher benachrichtigen, auf den dieses bestimmte Objekt jetzt zeigt. Da sich das Objekt selbst im Objektspeicher befindet, wirken sich alle Änderungen, die wir daran vornehmen, auf alle zval-Strukturen aus, die Zeiger auf das Objekt enthalten – was sich im Programm manifestiert, da sich alle Änderungen am Zielobjekt auf das Quellobjekt auswirken. .Dadurch sehen PHP-Objekte so aus, als würden sie immer als Referenz (Referenz) übergeben, sodass Objekte in PHP standardmäßig als „Referenz“ übergeben werden und Sie nicht mehr & verwenden müssen, um es wie in PHP4 zu deklarieren. Garbage-Collection-Mechanismus

Einige Sprachen, am häufigsten C, erfordern, dass Sie beim Erstellen einer Datenstruktur explizit nach der Speicherzuweisung fragen. Sobald Sie Speicher zugewiesen haben, können Sie Informationen in Variablen speichern. Gleichzeitig müssen Sie den Speicher freigeben, wenn Sie mit der Verwendung der Variablen fertig sind, damit der Computer Speicher für andere Variablen freigeben kann und verhindert wird, dass ihm der Speicher ausgeht.

PHP kann den Speicher automatisch verwalten und Objekte löschen, die nicht mehr benötigt werden. PHP verwendet die Referenzzählung, einen einfachen Garbage-Collection-Mechanismus. Jedes Objekt enthält einen Referenzzähler und jede mit dem Objekt verbundene Referenz erhöht den Zähler um eins. Wenn die Referenz den Wohnraum verlässt oder auf NULL gesetzt wird, wird der Zähler um 1 dekrementiert. Wenn der Referenzzähler eines Objekts Null erreicht, weiß PHP, dass Sie dieses Objekt nicht mehr verwenden müssen und gibt den von ihm belegten Speicherplatz frei.

Zum Beispiel:

Der Code lautet wie folgt:


Das obige ist der detaillierte Inhalt vonWie bezieht sich PHP auf das Objektmodell? Ausführliche Erläuterung spezifischer zitierter Beispiele. 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