Hướng dẫn iterable php example

Lặp lại trong PHP hướng đối tượng – PHP Iterables

Lặp lại ta có thể coi là một kiểu giả trong PHP. Nó chấp nhận bất kỳ mảng hoặc đối tượng nào triển khai giao diện Traversable. Cả hai loại này đề có thể lặp lại bằng cách sử dụng foreach và có thể sử dụng năng suất từ bên trong trình tạo. Nó có thể sử dụng làm kiểu dữ liệu cho đối số của hàm và giá trị trả về của hàm.

2. Sử dụng Iterables

Ta có thể sử dụng Iterables như một kiểu tham số để chỉ ra rằng một hàm yêu cầu một bộ giá trị, nhưng không quan tâm đến hình thức của bộ giá trị vì nó sẽ được sử dụng với foreach. Nếu một giá trị không phải làm một mảng hoặc bản sao của Traversable, một lỗi sẽ được hiển thị ra.

Ví dụ:

Sử dụng đối số hàm có thể lặp lại:

Trả lại một tệp có thể lặp lại:

Có thể lặp lại cũng có thể được sử dụng như một kiểu trả về để cho biết một hàm sẽ trả về một giá trị có thể lặp lại. Nếu giá trị trả về không phải là một mảng hoặc bản sao của Traversable , lỗi sẽ xảy ra.

Kiểu trả về có thể lặp lại:

Kiểu trả về của trình tạo có thể lặp lại:

3. Tạo lặp lại

Mảng: tất cả các mảng đều có thể lặp lại , vì vậy bất kỳ mảng nào cũng có thể được sử dụng làm đối số của một hàm yêu cầu có thể lặp lại.

Trình lặp lại: bất kỳ đối tượng nào triển khai giao diện Iterator đều có thể được sử dụng làm đối số của một hàm yêu cầu lặp lại.

Một trình lặp chứa danh sách các mục và cung cấp các phương thức để lặp qua chúng. Nó giữ một con trỏ đến một trong các phần tử trong danh sách. Mỗi mục trong danh sách phải có một khóa có thể được sử dụng để tìm mục đó.

Một trình lặp phải có các phương thức sau:

  • current[]  Trả về phần tử mà con trỏ hiện đang trỏ tới. Nó có thể là bất kỳ kiểu dữ liệu nào
  • key[] Trả về khóa được liên kết với phần tử hiện tại trong danh sách. Nó chỉ có thể là một số nguyên, float, boolean hoặc string
  • next[] Di chuyển con trỏ đến phần tử tiếp theo trong danh sách
  • rewind[] Di chuyển con trỏ đến phần tử đầu tiên trong danh sách
  • valid[] Nếu con trỏ bên trong không trỏ đến bất kỳ phần tử nào [ví dụ: nếu next [] được gọi ở cuối danh sách], điều này sẽ trả về false. Nó trả về true trong bất kỳ trường hợp nào khác

Ví dụ:

Qua các series tự học về Design Pattern, Hôm nay cafedevn chia sẻ cho ace ví dụ và code cụ thể về cách sử dụng Iterator design pattern với ngôn ngữ lập trình PHP. Nhằm giúp ace hiểu rõ cách sử Pattern này với PHP một cách nhanh nhất và áp dụng nó vào thực tế.

Trong ví dụ này, lớp BookList sẽ được lưu trữ từ 0 đến nhiều phần tử của lớp Book. BookListIterator có thể trả lại lần lượt tất cả các Book trong BookList và theo thứ tự tuần tự mà các phần tử Book đã được thêm vào BookList.

Tôi cũng hiển thị một BookListReverseIterator. BookListReverseIterator có thể trả lại lần lượt tất cả các Sách trong BookList và theo thứ tự tuần tự ngược lại mà các phần tử Sách đã được thêm vào BookList. Điều này được thêm vào để cho thấy rằng các trình vòng lặp tùy chỉnh có thể khá hữu ích khi bạn cần xử lý một danh sách theo một trình tự khác với tuần tự từ đầu đến cuối. Trong khi iterators này ngược lại, tôi cũng có thể hiển thị một trình lặp trả về, ví dụ, chỉ các phần tử được đánh số lẻ.

Lưu ý rằng các iterators được hiển thị không “mạnh” và sẽ mang lại kết quả không thể đoán trước được nếu List mà iterators đang xử lý có các phần tử bị loại bỏ trong khi iterators đang duyệt qua List . 

Phần code

Kết quả:

BEGIN TESTING ITERATOR PATTERN

Testing the Iterator
getting next book with iterator : 
Core PHP Programming, Third Edition by Atkinson and Suraski

getting next book with iterator : 
PHP Bible by Converse and Park

getting next book with iterator : 
Design Patterns by Gamma, Helm, Johnson, and Vlissides

getting current book with iterator : 
Design Patterns by Gamma, Helm, Johnson, and Vlissides

Testing the Reverse Iterator
getting next book with reverse iterator : 
Design Patterns by Gamma, Helm, Johnson, and Vlissides

getting next book with reverse iterator : 
PHP Bible by Converse and Park

getting next book with reverse iterator : 
Core PHP Programming, Third Edition by Atkinson and Suraski

getting current book with reverse iterator : 
Core PHP Programming, Third Edition by Atkinson and Suraski

END TESTING ITERATOR PATTERN

Cài ứng dụng cafedev để dễ dàng cập nhật tin và học lập trình mọi lúc mọi nơi tại đây.

Tài liệu từ cafedev:

  • Full series tự học Design Pattern từ cơ bản tới nâng cao tại đây nha.
  • Các nguồn kiến thức MIỄN PHÍ VÔ GIÁ từ cafedev tại đây

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

  • Group Facebook
  • Fanpage
  • Youtube
  • Instagram
  • Twitter
  • Linkedin
  • Pinterest
  • Trang chủ

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!

Chủ Đề