Heim  >  Artikel  >  Backend-Entwicklung  >  Schwache Referenzen in PHP 7.4

Schwache Referenzen in PHP 7.4

藏色散人
藏色散人Original
2019-11-30 14:28:523298Durchsuche

Schwache Referenzen in PHP 7.4

Einführung

Schwache Referenzen ermöglichen es Programmierern, Referenzen auf Objekte beizubehalten, während dieses Objekt das Objekt nicht verhindert vor Zerstörung; sie sind nützlich für die Implementierung von Cache-ähnlichen Strukturen. Sie verfügen derzeit über erweiterte Unterstützung in PHP.

Aktuelle Implementierungen von WeakRef werden alle durch Überladen von Objekthandlern implementiert, die beliebteste Implementierung (pecl-weakref) ändert den Stapel, der dem Nur-Lese-Speicher zugewiesen ist, und PHP 7.3 macht ihn nicht mehr verfügbar. Andere Implementierungen, die Objekthandler auf andere Weise ändern, laufen ebenfalls Gefahr, kaputt zu gehen, sich auf undefiniertes Verhalten zu verlassen und die Konsistenz zunichte zu machen.

Andere Implementierungen sind möglich. Krakjoe/uref ist eine Implementierung, die Low-Level-Funktionen (mprotect, 0xCC, Signale) verwendet, um schwache Refs zu implementieren, jedoch auf Kosten der Portabilität, der Erzeugung von Segmentierungsfehlern, des geschützten Speichers und des impliziten Signals Einschränkungen des Handlers.

Im Prinzip sind schwache Referenzobjekte nicht kompliziert, nur die (Missbrauchs-)Verwendung von Zend oder einer Ebene darunter, da wir es nicht direkt unterstützen.

Empfehlung

Wir unterstützen schwache Referenzen direkt auf einfachste Weise.

API

Die API:

final class WeakReference {
    public static function create(object $object) : WeakReference;
 
    public function get() : ?object;
}

Abwärtsinkompatible Änderungen

Keine.

Übersetzung: https://wiki.php.net/rfc/weakrefs

Das obige ist der detaillierte Inhalt vonSchwache Referenzen in PHP 7.4. 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