-
Notifications
You must be signed in to change notification settings - Fork 50
Expand file tree
/
Copy pathweakmap.xml
More file actions
135 lines (118 loc) · 3.91 KB
/
weakmap.xml
File metadata and controls
135 lines (118 loc) · 3.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: c4650e160398873696e59305a11db9645e0b7304 Maintainer: simp Status: ready -->
<reference xml:id="class.weakmap" role="class" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
<title>Die Klasse WeakMap</title>
<titleabbrev>WeakMap</titleabbrev>
<partintro>
<!-- {{{ WeakMap intro -->
<section xml:id="weakmap.intro">
&reftitle.intro;
<para>
Eine <classname>WeakMap</classname> ist eine Zuordnungstabelle (Map oder Dictionary), die Objekte als
Schlüssel akzeptiert. Jedoch - anders als bei einem ansonsten ähnlichen <classname>SplObjectStorage</classname> -
zählt ein Objekt, welches in einer <classname>WeakMap</classname> enthalten ist, nicht auf dessen
Referenzzähler ein. Das bedeutet, dass wenn zu einem beliebigen Zeitpunkt die letzte verbleibende Referenz
auf ein Objekt diejenige in einer <classname>WeakMap</classname> ist, wird das Objekt durch die Garbage
Collection bereinigt und aus der <classname>WeakMap</classname> entfernt. Der primäre Anwendungsfall
ist das Erzeugen eines Caches von Daten, die sich aus einem Objekt ableiten und keine längere Lebensdauer
als das zugrunde liegende Objekt benötigen.
</para>
<para>
<classname>WeakMap</classname> implementiert <interfacename>ArrayAccess</interfacename>,
<interfacename>Traversable</interfacename> (über <interfacename>IteratorAggregate</interfacename>),
und <interfacename>Countable</interfacename>, kann also in den meisten Fällen genau wie ein assoziatives Array verwendet werden.
</para>
</section>
<!-- }}} -->
<section xml:id="weakmap.synopsis">
&reftitle.classsynopsis;
<!-- {{{ Synopsis -->
<classsynopsis class="class">
<ooclass>
<modifier>final</modifier>
<classname>WeakMap</classname>
</ooclass>
<oointerface>
<modifier>implements</modifier>
<interfacename>ArrayAccess</interfacename>
</oointerface>
<oointerface>
<interfacename>Countable</interfacename>
</oointerface>
<oointerface>
<interfacename>IteratorAggregate</interfacename>
</oointerface>
<classsynopsisinfo role="comment">&Methods;</classsynopsisinfo>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.weakmap')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[@role='WeakMap'])">
<xi:fallback/>
</xi:include>
</classsynopsis>
<!-- }}} -->
</section>
<!-- {{{ weakmap examples -->
<section xml:id="weakmap.examples">
&reftitle.examples;
<para>
<example>
<title><classname>Weakmap</classname>-Anwendungsbeispiel</title>
<programlisting role="php">
<![CDATA[
<?php
$wm = new WeakMap();
$o = new stdClass;
class A {
public function __destruct() {
echo "Zerstört!\n";
}
}
$wm[$o] = new A;
var_dump(count($wm));
echo "Entferne...\n";
unset($o);
echo "Fertig\n";
var_dump(count($wm));
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
int(1)
Entferne...
Zerstört!
Fertig
int(0)
]]>
</screen>
</example>
</para>
</section>
<!-- }}} -->
</partintro>
&language.predefined.weakmap.count;
&language.predefined.weakmap.getiterator;
&language.predefined.weakmap.offsetexists;
&language.predefined.weakmap.offsetget;
&language.predefined.weakmap.offsetset;
&language.predefined.weakmap.offsetunset;
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->