Computer >> Máy Tính >  >> Lập trình >> PHP

Lặp lại đối tượng PHP

Giới thiệu

Từ PHP 5 trở đi, có thể lặp qua danh sách tất cả các mục hiển thị của một đối tượng. Có thể thực hiện lặp lại bằng cách sử dụng foreach vòng lặp cũng như trình lặp giao diện. Ngoài ra còn có IteratorAggregate giao diện bằng PHP, có thể được sử dụng cho mục đích này

Sử dụng vòng lặp foreach

Ví dụ

<?php
class myclass{
   private $var;
   protected $var1;
   public $x, $y, $z;
   public function __construct(){
      $this->var="private variable";
      $this->var1=TRUE;
      $this->x=100;
      $this->y=200;
      $this->z=300;
   }
   public function iterate(){
      foreach ($this as $key => $value) {
         print "$key => $value\n";
      }
   }
}
$obj = new myclass();
foreach($obj as $key => $value) {
   print "$key => $value\n";
}
echo "\n";
$obj->iterate();
?>

Đầu ra

Kết quả như bên dưới -

x => 100
y => 200
z => 300

var => private variable
var1 => 1
x => 100
y => 200
z => 300

Sử dụng giao diện lặp lại

Giao diện này định nghĩa các phương thức trừu tượng sau sẽ được đưa vào trong ví dụ sau

abstract public current ( void ) : mixed
abstract public key ( void ) : scalar
abstract public next ( void ) : void
abstract public rewind ( void ) : void
abstract public valid ( void ) : bool

Iterator ::current - Trả về phần tử hiện tại

Iterator ::key - Trả về khóa của phần tử hiện tại

Lặp lại ::tiếp theo - Chuyển tiếp đến phần tử tiếp theo

Trình lặp lại ::tua lại - Tua lại Trình lặp lại thành phần tử đầu tiên

Trình lặp lại ::hợp lệ - Kiểm tra xem vị trí hiện tại có hợp lệ không

Ví dụ sau minh họa sự lặp lại đối tượng bằng cách triển khai giao diện Iterator

Ví dụ

<?php
class myclass implements Iterator{
   private $arr = array('a','b','c');
   public function rewind(){
      echo "rewinding\n";
      reset($this->arr);
   }
   public function current(){
      $var = current($this->arr);
      echo "current: $var\n";
      return $var;
   }
   public function key() {
      $var = key($this->arr);
      echo "key: $var\n";
      return $var;
   }
   public function next() {
      $var = next($this->arr);
      echo "next: $var\n";
      return $var;
   }
   public function valid(){
      $key = key($this->arr);
      $var = ($key !== NULL && $key !== FALSE);
      echo "valid: $var\n";
      return $var;
   }
}
$obj = new myclass();
foreach ($obj as $k => $v) {
   print "$k: $v\n";
}
?>

Đầu ra

Đoạn mã trên tạo ra kết quả sau -

rewinding
valid: 1
current: a
key: 0
0: a
next: b
valid: 1
current: b
key: 1
1: b
next: c
valid: 1
current: c
key: 2
2: c
next:
valid: