php预定义接口中迭代的执行流程

<?php 

class  myIterator  implements  Iterator {
    private  $position  =  0 ;
    private  $array  = array(
         "firstelement" ,
         "secondelement" ,
         "lastelement" ,
    );  

    public function  __construct () {
         $this -> position  =  0 ;
    }

      //第一步
    function  rewind () {
        echo ‘第一轮遍历时执行此方法 以后都不执行‘;
         var_dump ( __METHOD__ );
         $this -> position  =  0 ;
    }

   //第二步
    function  valid () {
        echo ‘valid‘;
        var_dump ( __METHOD__ );
        return isset( $this -> array [ $this -> position ]);
    }

    //第三步
    function  current () {
        echo ‘current方法, 如果valid()方法返回false,此处停止,不往下执行‘;
         var_dump ( __METHOD__ );
        return  $this -> array [ $this -> position ];
    }

     //第四步
    function  key () {
        echo ‘key‘;
         var_dump ( __METHOD__ );
        return  $this -> position ;
    }

    function  next () {
        echo ‘第 ‘ . $this -> position . ‘轮遍历时执行此方法‘;
         var_dump ( __METHOD__ );
        ++ $this -> position ;
    }

}

$it  = new  myIterator() ;

foreach( $it  as  $key  =>  $value ) {
    print_r($key);
    echo "==============>>>>>>>>>>>>>";
    print_r($value);
    echo "\r\n \r\n";
}
时间: 2024-10-12 11:06:08

php预定义接口中迭代的执行流程的相关文章

PHP预定义接口之 ArrayAccess

最近这段时间回家过年了,博客也没有更新,感觉少学习了好多东西,也错失了好多的学习机会,就像大家在春节抢红包时常说的一句话:一不留神错过了好几亿.废话少说,这篇博客给大家说说关于PHP预定义接口中常用到的重量级人物: ArrayAccess.大家也许会问,最基本.最常用的预定义接口有6个呢,为啥非得说这个.从日常的使用情况来看:这个出现的频率非常高,特别是在框架中,比如Laravel.Slim等都会用到,并且用得非常经典,让人佩服啊.从技术上说:说实话其他的我用的少啊!只是知道简单的用法,对他的理

复习PHP-语言参考-预定义接口

1.Traversable 他是一个遍历接口规范 注意:发现一个有用的函数get_declared_classes,可以以数组形式显示当前脚本下所有已经定义的类名 2.Iterator Iterator迭代器继承自Traversable,是一种遍历对象内容的对象. 你可以自己写一个子类继承自它,并写上具体遍历的方法. Iterator包含:current(返回当前元素),key(当前键),next(下一个元素),rewind(返回至初始元素),valid(检测当前元素是否存在)五种方法. 3.I

shell中命令的执行流程

在shell中,一个命令有3中写法: 1 可以直接写(Normal Command) 2 可以放在双引号中("Command") 3 可以放在单引号中('Comand') 这3中写法,命令的执行流程也是不一样的,如下图所示: alias替换 将alias替换成真正的命令,比如将ls替换成ls --color=auto brace替换 将a{b,c}e替换成abe,ace ~替换 将~替换成HOME目录 变量替换 将$开头的变量替换为其真正的值 执行替换命令 即执行$(command)或

深入理解java中HelloWorld的执行流程

HelloWorld.java是我们学习java的第一个程序,简单的再也不能简单了,可是里面的原理以及执行流程大家都知道吗?最近在复习java知识,特地钻研了一番分享给大家! 贴出HelloWorld的代码如下: public class HelloWorld { public static void main(String[] args) { String s ; s = “Hello World!”; //定义字符串s System.out.println(s); } } 分析内存图: He

预定义接口

迭代器:可在内部迭代自己的外部迭代器或类的接口. Iterator::current/key/next/rewind/valid. 用foreach调用迭代器方法时的顺序: 聚合式迭代器:创建外部迭代器的接口. 数组式访问: ArrayAccess::offsetExists 检测一个偏移位置是否存在 ArrayAccess::offsetGet 获取一个偏移位置的值 ArrayAccess::offsetSet 设置一个偏移位置的值 ArrayAccess::offsetUnset 复位一个偏

PHP预定义接口一:Traversable

Traversable用于检测一个类是否可以使用 foreach 进行遍历. 这是一个无法在 PHP 脚本中实现的内部引擎接口,实际编程中我们使用Iterator接口或者IteratorAggregate接口来实现遍历. 这个接口没有任何方法,它的作用仅仅是作为所有可遍历类的基本接口. 接口摘要 Traversable { } 代码演示: $arr = [1, 2, 3, 4]; $obj = (object)$arr; if ($arr instanceof \Traversable) { e

Springmvc中的HandlerAdaptor执行流程

1.0在DispatcherServlet中找到getHandlerAdapter()方法: 2.0进入getHandlerAdapter()具体的方法实现内: 3.0获取ModelAndView: 4.0执行者: 好了架构已经搭建完了,现在我们来搞代码..... 1.依赖的节点: <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifact

Perl常用的预定义变量

Perl提供了大量的预定义变量,下面列举了常用的一些预定义变量: $_                  在执行输入和模式搜索操作时使用的默认空格变量 $.                  文件中最后处理的当前行号 [email protected]                  由最近一个eval()运算符提供的Perl语法报错信息 $!                  获取当前错误信息值,常用于die命令 $$                  正在执行脚本的Perl进程号 $PER

[转]关于VC预定义常量_WIN32,WIN32,_WIN64

VC2012 下写 Windows 程序时,有时需要判断编译环境.在之前的文章<判断程序是否运行在 Windows x64 系统下.>里说过如何在运行期间判断系统环境,但在编译时如何判断? MSDN 里说,VC 有 3 个预处理常量,分别是 _WIN32,_WIN64,WIN32.这三个常量如何使用呢?看起来简单,其实是很困惑的. 在 Win32 配置下,WIN32 在“项目属性-C/C++-预处理器-预处理器定义”里声明了,而在 x64 配置下,这个常量并不在项目预定义列表中.这是否说明可以