zoukankan      html  css  js  c++  java
  • SPL之Iterator和ArrayAccess的结合使用

    <?php
    
    namespace TabControl;
    
    class MyIterator implements Iterator, ArrayAccess
    {
        private $data = [];
        private static $obj = null;
    
        private function __construct($data)
        {
            $this->data = $data;
        }
    
        public static function getInstance(array $data)
        {
            if (is_null(self::$obj)) {
                self::$obj = new self($data);
            }
            return self::$obj;
        }
    
        public function rewind()
        {
            // TODO: Implement rewind() method.
            dump(__METHOD__);
            reset($this->data);
        }
    
        public function valid()
        {
            // TODO: Implement valid() method.
            dump(__METHOD__);
            return isset($this->data[key($this->data)]);
        }
    
        public function key()
        {
            // TODO: Implement key() method.
            dump(__METHOD__);
            return key($this->data);
        }
    
        public function current()
        {
            // TODO: Implement current() method.
            dump(__METHOD__);
            return current($this->data);
        }
    
        public function next()
        {
            // TODO: Implement next() method.
            dump(__METHOD__);
            next($this->data);
        }
    
        public function offsetExists($offset)
        {
            // TODO: Implement offsetExists() method.
            dump(__METHOD__);
            return isset($this->data[$offset]);
        }
    
        public function offsetGet($offset)
        {
            // TODO: Implement offsetGet() method.
            dump(__METHOD__);
            if (!$this->offsetExists($offset)){
                throw new InvalidArgumentException('下标不存在');
            }
            return $this->data[$offset];
        }
    
        public function offsetSet($offset, $value)
        {
            // TODO: Implement offsetSet() method.
            dump(__METHOD__);
            $this->data[$offset] = $value;
        }
    
        public function offsetUnset($offset)
        {
            // TODO: Implement offsetUnset() method.
            dump(__METHOD__);
            unset($this->data[$offset]);
        }
    }
    // 控制器中调用

    <?php namespace appindexcontroller; use thinkController; use TabControlMyIterator; class Iterator extends Controller { /** * 显示资源列表 * * @return hinkResponse */ public function index() { // $obj = MyIterator::getInstance(['a', 'b', 'c']); $obj['name'] = 'tom'; foreach ($obj as $k => $v) { echo $k . ' ' . $v . '<br>'; } $obj[5]; } }
  • 相关阅读:
    pwm驱动原理和代码实现
    物理-引力场:百科
    物理-引力:百科
    术语-物理-超距作用:百科
    物理-量子力学-量子纠缠:百科
    un-心理学:目录
    心理学-享乐主义:百科
    un-心理学:百科
    人才-理想人才:百科
    笔记-设计-页面-普天
  • 原文地址:https://www.cnblogs.com/cshaptx4869/p/10416508.html
Copyright © 2011-2022 走看看