美文网首页
php的7个预定义接口之[遍历+迭代]

php的7个预定义接口之[遍历+迭代]

作者: 不执着的牛 | 来源:发表于2019-07-15 15:23 被阅读0次

    1.Traversable(遍历)接口

    作用:检测一个类是否可以使用 foreach 进行遍历的接口。

    php代码中不能用。只有内部的PHP类(用C写的类)才可以直接实现Traversable接口

    php代码中使用Iterator或IteratorAggregate接口来实现遍历。

    这个接口没有任何方法,它的作用仅仅是作为所有可遍历类的基本接口

    2.Iterator(迭代器)接口

    作用:实现一个类似于指针移动的类,对应其中的5个方法:key(),current(),next(),rewind(),valid();这几个方法名必须是固定的,不能乱写,可多不可少(比如下面的pre方法并不在上述五个里面)

    <?php

    class subIterator implements Iterator{

        private $key = 0;

        private $arr = ['hello','你好','hi'];

        public function key(){

            return $this->key;

        }

        public function current(){

            return $this->arr[$this->key];

        }

        public function rewind(){

            return $this->key = 0;

        }

        public function next(){

            ++$this->key;

        }

        public function pre(){

            --$this->key;   

        }

        public function valid(){

            return isset($this->arr[$this->key]);

        }

    }

    $obj = new subIterator;

    echo $obj->key();

    echo $obj->current();

    $obj->next();

    echo $obj->current();

    $obj->pre();

    echo $obj->current();

    var_dump($obj instanceOf Traversable); //返回true,证明这个类的对象是可以进行遍历的

    ?>

    相关文章

      网友评论

          本文标题:php的7个预定义接口之[遍历+迭代]

          本文链接:https://www.haomeiwen.com/subject/fhjnkctx.html