Heim >Backend-Entwicklung >PHP-Tutorial >使你的PHP对象可被foreach,属性用Private修饰的

使你的PHP对象可被foreach,属性用Private修饰的

WBOY
WBOYOriginal
2016-07-25 09:06:33969Durchsuche
无聊时玩一玩。
遍历对象其实只是遍历对象中特定的一个数组类型的属性而已。
PHP5后可以直接foreach,但是类的私有成员访问不到。
面向对象的原则也不允许类成员被外部直接访问。
  1. /*
  2. * @class Sample
  3. * @remark 遍历对象其实只是变量该对象里的一个数组而已;要使得该对象能被遍历,需实现iterator接口
  4. */
  5. class Sample implements iterator
  6. {
  7. private $v1 = '123';
  8. private $v2 = 'abc';
  9. private $v3 = array( 1, 2, 3 );
  10. public function rewind()
  11. {
  12. /*
  13. * get_object_vars 该函数查下手册可以看它的功能
  14. * 这里把Sample对象实现定义好的属性,而不是动态生成的属性$data合并成一个数组,
  15. * 把该组赋值给$data
  16. */
  17. $this->data = get_object_vars ( $this );
  18. /*
  19. * 把iterator接口中的游标指向 $data 的第一个元素
  20. */
  21. reset( $this->data );
  22. }
  23. public function current() { return current( $this->data ); }
  24. public function key() { return key( $this->data ); }
  25. public function next() { return next( $this->data ); }
  26. public function valid() { return ( $this->current() !== false ); }
  27. }
  28. $s = new Sample();
  29. foreach( $s as $k=>$v ){ echo $k.'='.$v.'
    ';}
复制代码


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn