1. 程式人生 > 其它 >SpringJDK動態代理實現

SpringJDK動態代理實現

技術標籤:TP6Laravelphpphpjava資料結構指標

php提供了一個語法結構用於遍歷陣列和物件

foreach

遍歷陣列用法

複製程式碼

1 <php
2 //定義一個數組
3 $arr = array("1","2","3","4","5");
4 //用foreach遍歷
5 foreach($arr as $key => $value){
6     echo '鍵名:'.$key.'鍵值:'.$value."<br>";
7 }8 ?>    

複製程式碼

輸出結果:

鍵名:0鍵值:1
鍵名:1鍵值:2
鍵名:2鍵值:3
鍵名:3鍵值:4
鍵名:4鍵值:5

而foreach則不能直接遍歷物件裡面的屬性,需要通過迭代器(預定義介面)

最基本的迭代器介面是Iterator

Iterator裡面規範瞭如下方法:

複製程式碼

1 Iterator extends Traversable {
2 /* 方法 */
3 abstract public mixed current ( void )//返回當前元素
4 abstract public scalar key ( void )//返回當前元素的鍵
5 abstract public void next ( void )//向前移動到下一個元素
6 abstract public void rewind ( void )//返回到迭代器的第一個元素
7 abstract public boolean valid ( void )//檢查當前位置是否有效
8 }

複製程式碼

要進行遍歷的類必須實現Iterator裡面的抽象方法。

舉個例子

複製程式碼

 1 class Season implements Iterator{
 2     private $position = 0;//指標指向0
 3     private $arr = array('春','夏','秋','冬');
 4     public function rewind(){
 5         return $this -> position = 0;
 6     }
 7     public function current(){
 8         return $this -> arr[$this -> position];
 9     }
10     public function key(){
11         return $this -> position;
12     }
13     public function next() {
14         ++$this -> position;
15     }
16 
17     public function valid() {
18         return isset($this -> arr[$this -> position]);
19     }
20 }
21 $obj = new Season;
22 foreach ($obj as $key => $value) {
23     echo $key.':'.$value."\n";
24 }
25 ?>

複製程式碼

結果:

0:春
1:夏
2:秋
3:冬

php有對陣列指標的操作,可不用定義$position

1.key();從關聯陣列中取得鍵名,沒有取到返回NULL

2.current();返回陣列中當前單元

3.next();將陣列中的內部指標向前移動一位

4.prev();將陣列的內部指標倒回一位

5.reset();將陣列的內部指標指向第一個單元

6.end();將陣列的內部指標指向最後一個單元

以上是對迭代器Iterator的簡單學習筆記。