欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【面试题】使对象可以像数组一样进行foreach循环,要求属性必须是私有

程序员文章站 2022-05-28 15:41:22
...

   主旨:PHP5提供了一种迭代(iteration)对象的功能,就像使用数组那样,可以通过foreach 来遍历对象中的属性。默认情况下,在外部迭代只能得到外部可见的属性的值,可在内部迭代自己的外部迭代器或类的接口。

Iterator extends Traversable {
     /* 方法 */
    abstract public mixed current ( void )
    abstract public scalar key ( void )
    abstract public void next ( void )
    abstract public void rewind ( void )
    abstract public boolean valid ( void )
}

 

<?php
    class Sample implements iterator{
      private $var = array(1,2,3,4,5);
      public function __construct(){}
      public function rewind(){ reset($this->var);}
      public function current(){return current($this->var);}
      public function key(){return key($this->var);}
      public function next(){return next($this->var);}
     public function valid(){return ($this->current()!==false);}
    }
    $s = new Sample();
   foreach($s as $k=>$v){ echo $k.'='.$v.'<br/>';}
?>

 

相关标签: iteration php