天天看點

【面試題】使對象可以像數組一樣進行foreach循環,要求屬性必須是私有

   主旨: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/>';}
?>