亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

PHP中預定義的6種接口介紹

2024-05-04 23:35:04
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了PHP中預定義的6種接口介紹,本文講解了Traversable、Iterator、IteratorAggregate、ArrayAccess、Serializable、Closure,需要的朋友可以參考下

PHP預定義了6個接口介紹如下:

1.Traversable遍歷接口

呵呵!其實它不是一個在PHP中可以使用的接口,內部類才可使用,它有一個用途就是檢測一個類是否可以遍歷。

 

 
  1. if($class instanceof Traversable) { 
  2. //foreach 

2.Iterator迭代器接口

接口摘要:

 

 
  1. Iterator extends Traversable  
  2. {  
  3. //返回當前索引游標指向的元素  
  4. abstract public mixed current(void)  
  5. //返回當前索引游標指向的元素的鍵名  
  6. abstract public scalar key(void)  
  7. //移動當前索引游標指向下一元素  
  8. abstract public void next(void)  
  9. //重置索引游標的指向第一個元素  
  10. abstract public void rewind(void)  
  11. //判斷當前索引游標指向的是否是一個元素,常常在調用 rewind()或 next()使用  
  12. abstract public boolean valid(void)  

以上可以讓一個類實現一個基本的迭代功能,如下可以看到迭代的調用順序:

 

 
  1. class myIterator implements Iterator { 
  2. private $position = 0 ; 
  3. private $array = array
  4. "firstelement" , 
  5. "secondelement" , 
  6. "lastelement" , 
  7. ); 
  8.  
  9. public function __construct () { 
  10. $this -> position = 0 ; 
  11.  
  12. function rewind () { 
  13. var_dump ( __METHOD__ ); 
  14. $this -> position = 0 ; 
  15.  
  16. function current () { 
  17. var_dump ( __METHOD__ ); 
  18. return $this -> array [ $this -> position ]; 
  19.  
  20. function key () { 
  21. var_dump ( __METHOD__ ); 
  22. return $this -> position ; 
  23.  
  24. function next () { 
  25. var_dump ( __METHOD__ ); 
  26. ++ $this -> position ; 
  27.  
  28. function valid () { 
  29. var_dump ( __METHOD__ ); 
  30. return isset( $this -> array [ $this -> position ]); 
  31.  
  32. $it = new myIterator ; 
  33.  
  34. foreach$it as $key => $value ) { 
  35. var_dump ( $key , $value ); 
  36. echo "/n" ; 

3.IteratorAggregate聚合式迭代器接口

接口摘要:

 

 
  1. IteratorAggregate extends Traversable { 
  2.  
  3. //獲取外部迭代器 
  4. abstract public Traversable getIterator ( void ) 
  5. }  

getIterator是一個Iterator或Traversable接口的類的一個實例。如下獲取外部迭代器實現迭代訪問。

 

 
  1. class myData implements IteratorAggregate { 
  2. public $property1 = "Public property one" ; 
  3. public $property2 = "Public property two" ; 
  4. public $property3 = "Public property three" ; 
  5.  
  6. public function __construct () { 
  7. $this -> property4 = "last property" ; 
  8.  
  9.  
  10. public function getIterator () { 
  11. return new ArrayIterator ( $this ); 
  12.  
  13. $obj = new myData ; 
  14.  
  15. foreach$obj as $key => $value ) { 
  16. var_dump ( $key , $value ); 
  17. echo "/n" ; 

4.ArrayAccess數組式訪問接口

接口摘要:

 

 
  1. ArrayAccess { 
  2. /* 方法 */ 
  3. abstract public boolean offsetExists ( mixed $offset ) //檢查偏移位置是否存在 
  4. abstract public mixed offsetGet ( mixed $offset ) //獲取一個偏移位置的值 
  5. abstract public void offsetSet ( mixed $offset , mixed $value ) //設置一個偏移位置的值 
  6. abstract public void offsetUnset ( mixed $offset ) //復位一個偏移位置的值 

如下可像訪問數組一樣訪問對象:

 

 
  1. class obj implements arrayaccess { 
  2. private $container = array(); 
  3. public function __construct () { 
  4. $this -> container = array
  5. "one" => 1 , 
  6. "two" => 2 , 
  7. "three" => 3 , 
  8. ); 
  9. public function offsetSet ( $offset , $value ) { 
  10. if ( is_null ( $offset )) { 
  11. $this -> container [] = $value ; 
  12. else { 
  13. $this -> container [ $offset ] = $value ; 
  14. public function offsetExists ( $offset ) { 
  15. return isset( $this -> container [ $offset ]); 
  16. public function offsetUnset ( $offset ) { 
  17. unset( $this -> container [ $offset ]); 
  18. public function offsetGet ( $offset ) { 
  19. return isset( $this -> container [ $offset ]) ? $this -> container [ $offset ] : null ; 
  20.  
  21. $obj = new obj ; 
  22.  
  23. var_dump (isset( $obj [ "two" ])); 
  24. var_dump ( $obj [ "two" ]); 
  25. unset( $obj [ "two" ]); 
  26. var_dump (isset( $obj [ "two" ])); 
  27. $obj [ "two" ] = "A value" ; 
  28. var_dump ( $obj [ "two" ]); 
  29. $obj [] = 'Append 1' ; 
  30. $obj [] = 'Append 2' ; 
  31. $obj [] = 'Append 3' ; 
  32. print_r ( $obj ); 

5.Serializable序列化接口

接口摘要:

 

 
  1. Serializable { 
  2.  
  3. /* 方法 */ 
  4. abstract public string serialize ( void ) //對象的字符串表示 
  5. abstract public mixed unserialize ( string $serialized ) // 構造對象 

實現該接口的類不再支持__sleep()和__wakeup()。使用很簡單,只要序列化對象時serialize方法會被調用,當反序列化時,unserialize方法被調用。

 

 
  1. class obj implements Serializable { 
  2. private $data ; 
  3. public function __construct () { 
  4. $this -> data = "My private data" ; 
  5. public function serialize () { 
  6. return serialize ( $this -> data ); 
  7. public function unserialize ( $data ) { 
  8. $this -> data = unserialize ( $data ); 
  9. public function getData () { 
  10. return $this -> data ; 
  11.  
  12. $obj = new obj ; 
  13. $ser = serialize ( $obj ); 
  14. print_r($ser); 
  15. $newobj = unserialize ( $ser ); 
  16. print_r($newobj); 

6.Closure

接口摘要:

 

 
  1. Closure { 
  2. /* 方法 */ 
  3. __construct ( void ) //用于禁止實例化的構造函數 
  4. public static Closure bind ( Closure $closure , object $newthis [, mixed $newscope = 'static' ] ) //復制一個閉包,綁定指定的$this對象和類作用域。 
  5. public Closure bindTo ( object $newthis [, mixed $newscope = 'static' ] ) //復制當前閉包對象,綁定指定的$this對象和類作用域。 

 

 
  1. class A { 
  2. private static $sfoo = 1 ; 
  3. private $ifoo = 2 ; 
  4. $cl1 = static function() { 
  5. return A :: $sfoo ; 
  6. }; 
  7. $cl2 = function() { 
  8. return $this -> ifoo ; 
  9. }; 
  10.  
  11. $bcl1 = Closure :: bind ( $cl1 , null , 'A' ); 
  12. $bcl2 = Closure :: bind ( $cl2 , new A (), 'A' ); 
  13. echo $bcl1 (), "/n" ; 
  14. echo $bcl2 (), "/n" ; 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91影院在线免费观看视频| 色妞久久福利网| 久久久久久亚洲精品不卡| 久久久女女女女999久久| 欧美日韩一区二区在线播放| 成人国产精品一区二区| 精品亚洲国产成av人片传媒| 国产主播精品在线| 午夜精品美女自拍福到在线| 欧美午夜性色大片在线观看| 亚洲成人免费网站| 国产精品精品久久久久久| 亚洲第一区中文字幕| 中文字幕久热精品在线视频| 日韩一二三在线视频播| 欧洲美女免费图片一区| 国产精品久久久久久久久久久不卡| 欧美一级电影在线| 2018国产精品视频| 亚洲精品一区中文字幕乱码| 午夜精品福利在线观看| 亚洲欧美国产日韩天堂区| 欧美激情手机在线视频| 日韩精品免费视频| 欧美大片第1页| 久久五月情影视| 国产精品日韩一区| 久久久久久久久久久国产| 91免费人成网站在线观看18| 久久免费视频观看| 国外视频精品毛片| 91网站在线免费观看| 国产亚洲aⅴaaaaaa毛片| 亚洲女同精品视频| 亚洲国产福利在线| 日韩欧美一区二区在线| 91免费版网站入口| 黑人巨大精品欧美一区免费视频| 91精品国产自产在线观看永久| 国产精品一区二区三| 岛国av一区二区三区| 亚洲欧美在线免费| 欧美电影免费观看高清| 欧美限制级电影在线观看| 亚洲国产成人91精品| 国产精品入口免费视| 久久综合五月天| 亚洲欧美日韩爽爽影院| 国产aⅴ夜夜欢一区二区三区| 国产伊人精品在线| 亚洲free性xxxx护士白浆| 国产日韩在线播放| 午夜免费久久久久| 亚洲人午夜精品免费| 日韩成人av一区| 日韩在线中文字| 国产精品成av人在线视午夜片| 国产99久久精品一区二区 夜夜躁日日躁| 成人精品一区二区三区| 亚洲成人三级在线| 精品网站999www| 日韩暖暖在线视频| 成人动漫网站在线观看| 国产97在线视频| 欧美激情免费看| 91tv亚洲精品香蕉国产一区7ujn| 伊人久久久久久久久久久久久| 色av吧综合网| 日韩电视剧在线观看免费网站| 国产成+人+综合+亚洲欧美丁香花| 国产在线视频不卡| 日韩中文字幕在线视频| 麻豆成人在线看| 77777少妇光屁股久久一区| 久久久久久久一| 日韩精品极品在线观看播放免费视频| 久久久精品一区| 欧美激情综合色| 国产日韩综合一区二区性色av| 亚洲情综合五月天| 91精品在线影院| 日韩av手机在线观看| 欧洲一区二区视频| 欧美精品成人在线| 久久影视电视剧免费网站| 26uuu另类亚洲欧美日本老年| 精品成人69xx.xyz| 亚洲免费电影在线观看| 欧美成aaa人片在线观看蜜臀| 美日韩丰满少妇在线观看| 亚洲精品国产精品国产自| 国产精品激情自拍| 欧美精品免费在线观看| 欧美情侣性视频| 中文字幕成人在线| 91成人在线观看国产| 日韩视频在线观看免费| 日韩国产一区三区| 欧美巨大黑人极品精男| 欧美性受xxx| 亚洲影院高清在线| 欧美第一黄网免费网站| 日韩在线视频线视频免费网站| 国产精品678| 欧美激情精品久久久久久久变态| 亚洲自拍偷拍第一页| 亚洲欧洲日产国码av系列天堂| 自拍偷拍亚洲精品| 日韩一区二区精品视频| 国产精品久久久久av免费| 久久久亚洲精品视频| 日韩av一区二区在线观看| 久久久久亚洲精品成人网小说| 国产69精品99久久久久久宅男| 一区二区三区精品99久久| 国内精品久久久久久久| 欧美成年人视频网站欧美| 国产脚交av在线一区二区| 欧美日韩一区免费| 国产精品扒开腿做爽爽爽的视频| 欧美黄色片免费观看| 亚洲国产天堂久久综合网| 日韩视频在线免费| 欧美精品日韩www.p站| 成人午夜两性视频| 国产成人久久精品| 亚洲欧美日韩精品久久| 91探花福利精品国产自产在线| 91大神在线播放精品| 亚洲综合在线中文字幕| 欧美一级视频免费在线观看| 中文字幕视频在线免费欧美日韩综合在线看| 国产精品露脸av在线| 精品久久久久久久久久ntr影视| 美日韩精品免费观看视频| 91青草视频久久| 91视频国产一区| 亚洲第一网站男人都懂| 欧美一二三视频| 欧美日韩精品中文字幕| 欧美激情一区二区三区在线视频观看| 久久99久国产精品黄毛片入口| 欧美日韩中文字幕在线视频| 久久频这里精品99香蕉| 国产精品吹潮在线观看| 日韩av一区二区在线观看| 久久国产精品影片| 欧美成人h版在线观看| 日韩在线观看成人| 成人免费网站在线| 欧美成人激情视频免费观看| 中文字幕欧美日韩va免费视频| 91av免费观看91av精品在线| 亚洲一区999| 欧美日韩视频在线| 成人午夜两性视频| 蜜臀久久99精品久久久无需会员| 日韩av色在线| 亚洲成人性视频| 日韩中文字幕视频在线| 中文字幕国产精品久久| 欧美成人免费全部观看天天性色| 国产玖玖精品视频| 91国内在线视频|