-
Notifications
You must be signed in to change notification settings - Fork 108
Expand file tree
/
Copy pathweakmap.xml
More file actions
133 lines (116 loc) · 3.67 KB
/
weakmap.xml
File metadata and controls
133 lines (116 loc) · 3.67 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
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: c4650e160398873696e59305a11db9645e0b7304 Maintainer: mowangjuanzi Status: ready -->
<!-- CREDITS: Luffy -->
<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>WeakMap 类</title>
<titleabbrev>WeakMap</titleabbrev>
<partintro>
<!-- {{{ WeakMap intro -->
<section xml:id="weakmap.intro">
&reftitle.intro;
<para>
<classname>WeakMap</classname> 是将对象作为 key 来访问的 map(或者说字典)。然而,与其它类似 <classname>SplObjectStorage</classname>
不同,<classname>WeakMap</classname> 中的对象 key 不影响对象的引用计数。也就是说,如果在任何时候对其唯一的剩余引用是
<classname>WeakMap</classname> key,那么该对象将会被垃圾收集并从 <classname>WeakMap</classname>
移除。它的主要用法是从对象中编译数据派生缓存,这种场景下不需要存活得比对象更久。
</para>
<para>
<classname>WeakMap</classname> 实现了 <interfacename>ArrayAccess</interfacename>、
<interfacename>Traversable</interfacename>(通过 <interfacename>IteratorAggregate</interfacename>)和
<interfacename>Countable</interfacename>,
因此大多数情况下,它能和关联数组一样使用。
</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> 用法示例</title>
<programlisting role="php">
<![CDATA[
<?php
$wm = new WeakMap();
$o = new stdClass;
class A {
public function __destruct() {
echo "Dead!\n";
}
}
$wm[$o] = new A;
var_dump(count($wm));
echo "Unsetting...\n";
unset($o);
echo "Done\n";
var_dump(count($wm));
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
int(1)
Unsetting...
Dead!
Done
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
-->