<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                **一.什么是WeakMap弱映射** #WeakMap中鍵中存的是另一個對象的引用,這個引用是一種弱映射關系,一旦另一個對象的引用斷開即想刪除對象,弱映射就會斷開. **二.對象引用講解和棧堆關系** ~~~ $a=new StdClass; $b=$a; unset($a); var_dump($b); ~~~ **三.splObjectStorage講解** ~~~ $map = new splObjectStorage(); $object = new stdClass(); $map[$object] = 'Foo'; var_dump(count($map)); unset($object); var_dump(count($map)); ~~~ **四.WeakMap講解** ~~~ $map = new WeakMap(); $object = new stdClass(); $map[$object] = 'Foo'; var_dump(count($map)); unset($object); var_dump(count($map)); ~~~ **五.WeakMap類結構** ~~~ WeakMap implements Countable , ArrayAccess , Iterator { /* 方法 */ public __construct ( ) public count ( ) : int public current ( ) : mixed public key ( ) : object public next ( ) : void public offsetExists ( object $object ) : bool public offsetGet ( object $object ) : mixed public offsetSet ( object $object , mixed $value ) : void public offsetUnset ( object $object ) : void public rewind ( ) : void public valid ( ) : bool } #迭代器用法 $map = new WeakMap(); $object = new stdClass(); $map[$object] = 'Foo'; $iterator = $map->getIterator(); #key和current用法 var_dump($iterator->key()); var_dump($iterator->current()); var_dump($iterator->next()); #foreach迭代 foreach($iterator as $key=>$value){ echo $key::class.'----'.$value; } ~~~ **六.splObjectStorage存儲對象和引用,WeakMap只能存儲引用** ~~~ $map = new splObjectStorage(); $map[new stdClass()] = 'Foo'; count($map); $map = new WeakMap(); $map[new stdClass()] = 'Foo'; count($map); ~~~ **七.WeakMap迭代** ~~~ $map = new WeakMap(); $obj1 = new stdClass(); $map[$obj1] = 'Object 1'; foreach ($map as $key => $value) { var_dump($key); var_dump($value); } ~~~ **八.迭代器** ~~~ function Gen() { yield 'user1' => '123'; yield 'user2' => '456'; yield 'user3' => '789'; } $gen = Gen(); foreach($gen as $key=>$value){ echo "$key,$value <br>"; } var_dump($gen instanceof Iterator); ~~~ **九.WeakMap也可生成iterator迭代器進行迭代** ~~~ $map = new WeakMap(); $obj1 = new stdClass(); $map[$obj1] = 'Object 1'; $iterator = $map->getIterator(); var_dump($gen instanceof Iterator); foreach ($iterator as $key => $value) { var_dump($key); var_dump($value); echo "$key,$value"; } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看