Hướng đối tượng trong PHP: Iterator, ArrayIterator

Hướng đối tượng trong PHP: Iterator, ArrayIterator

Iterator

Iterator về bản chất là một interface chuẩn được xây dựng sẵn trong PHP để bạn giễ dàng thao tác với các bộ giá trị. Cấu trúc của interface iterator trong PHP mặc định khai báo một số phương thức như sau:

interface Iterator{
  function rewind();
  function current();
  function key();
  function next();
  function valid();
}

Vậy nên lớp nào sử dụng interface interator đều phải định nghĩa các phương thức trên. Chúng ta sẽ cùng xem xét một ví dụ về việc sử dụng interator để duyệt mảng trả về từ CSDL.

class QueryInterator implements Iterator{
    private $result;
    private $connection;
    private $key=0;
    private $valid;
    private $data;
   
    function __construct($host, $user, $password, $dbname){
        $this->connection = mysql_connect($host,$user, $password);
        mysql_selectdb($dbname,$this->connection);
    }
   
    public function exceute($query){
        $this->result = mysql_query($query,$this->connection);
        if(mysql_num_rows($this->result) > 0){
            $this->next();
        }
    }
   
    public function current(){
        return $this->data;
    }
    public function rewind(){}
    public function key(){
        return $this->key;
    }
   
    public function next(){
        if($this->data = mysql_fetch_assoc($this->result)){
            $this->valid = true;
            $this->key +=1;
        }else{
            $this->valid = false;
        }
    }
   
    public function valid(){
        return $this->valid;
    }
}
$q = new QueryInterator("localhost","root","","test");
$q->exceute("SELECT name FROM ex1");
echo '<pre>';
while($q->valid()){
    print_r($q->current());
    $q->next();
}
echo '</pre>';

ArrayIterator

ArrayIterator về bản chất nó là đối tượng được xây dựng sẵn trong thư viện PHP chuẩn và lớp này sử dụng iterface iterator.

Trong bài viết trước có đề cập đến ArrayObject cũng là đối tượng được xây dựng sẵn trong thư viện PHP chuẩn và nó có phương thức __construct() như sau:

__construct ($array, $flags=0, $iterator_class="ArrayIterator")

Chúng ta thấy đối số thứ 3 mặc định đã được khởi tạo là "ArrayIterator" để đối tượng dạng mảng có thể sử dụng đối tượng ArrayIterator thông qua phương thức getIterator().
ArrayItertor định nghĩa cho chúng ta bộ phương thức theo đúng interface iterator để thao tác với mảng. Bạn có thể xem ví dụ ở bài trước về ArrayObject với phương thức getIterator().

Tham khảo "object-oriented programming with PHP5 _ Hasin Hayder".

Bạn thấy bài viết này như thế nào?: 
Average: 9 (66 votes)
Ảnh của Khanh Hoang

Khanh Hoang - Kenn

Kenn is a user experience designer and front end developer who enjoys creating beautiful and usable web and mobile experiences.

Bình luận (0)

 

Add Comment

Filtered HTML

  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Các thẻ HTML được chấp nhận: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Tự động ngắt dòng và đoạn văn.

Plain text

  • No HTML tags allowed.
  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Tự động ngắt dòng và đoạn văn.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
Cách Viết Nội Dung Hấp Dẫn Cho Landing Page Để Tối Ưu Tỷ Lệ Chuyển Đổi

Cách Viết Nội Dung Hấp Dẫn Cho Landing Page Để Tối Ưu Tỷ Lệ Chuyển Đổi

Landing page là một trang web đơn giản (một trang đơn), nhằm mục đích tránh sự lan man & tăng sự tập trung của người dùng truy cập web.

Apple thử nghiệm hệ điều hành mới iOS 6

Apple thử nghiệm hệ điều hành mới iOS 6

Hàng loạt trang công nghệ vừa công bố những bằng chứng cho thấy Apple có vẻ như đang tiến hành thử nghiệm iOS 6, phiên bản mới của hệ điều hành dành cho các thiết bị di động.

Người dùng Việt đang biến hashtag thành trò spam nhảm

Người dùng Việt đang biến hashtag thành trò spam nhảm

Hashtag đang là một chủ đề hot trên mọi ngóc ngách của Facebook trong hai ngày qua. Tuy nhiên tính nay này đang bị “lạm dụng” một cách vô tội vạ, khiến Facebook trở nên xấu xí, và đi chệch những định hướng dành cho tính năng này.

Công ty diệt chuột T&C

 

Diet con trung