$array[] = 'newItem'.
Разбира се, за пълноценна емулация на това поведение е нужна имплементация на споменатия интерфейс. За него научаваме от извора.
Интерфейс ArrayAccess в PHP
interface ArrayAccess { /* Методи */ abstract public offsetExists ( $offset ) abstract public offsetGet ( $offset ) abstract public offsetSet ( $offset , $value ) abstract public offsetUnset ( $offset ) }
Интерфейсът съдържа 4 абстрактни метода:
- abstract public boolean offsetExists(mixed $offset) — съществува ли значение по зададения ключ;
- abstract public mixed offsetGet(mixed $offset) — получаване на значение по индекс;
- abstract public void offsetSet(mixed $offset, mixed $value) — установява значение с посочен индекс;
- abstract public void offsetUnset(mixed $offset) — премахва значението.
Как да се възползваме от интерфейса?
Нека създадем клас Book, опишем нужните ни свойства и презаредим методите на интерфейса. Забележете видимостта на свойствата.
клас book.class.php
<?php class Book implements ArrayAccess{ public $title; private $author; protected $isbn; function offsetExists($item){ return isset($this->$item); } function offsetUnset($item){ unset($this->$item); } function offsetSet($item, $value){ $this->$item = $value; } function offsetGet($item){ return $this->$item; } }
И създадем основен файл, в когото ще добавим book.class.php, ще създадем обект и ще го обходим.
index.php
<?php // включване на класа include 'book.class.php'; // създаване на инстанция $book = new Book(); // добавяне на значение $book['title'] = 'PHP4'; // проверка и прочит на значение if(isset($book['title'])){ echo $book['title']; // заличаване unset($book['title']); // добавяне на нови $book['title'] = 'PHP5'; $book['author'] = 'John Smith'; $book['isbn'] = '123456'; } echo '<pre>'. print_r($book, true).'</pre>'; echo $book['isbn'];
Резултат на нашата работа в браузъра ще бъде изведено това:
PHP4 Book Object ( [title] => PHP5 [author:Book:private] => John Smith [isbn:protected] => 123456 ) 123456
За програмист на процедурен код това е повече от типично. Няма ги стрелките, двойните точки, присъщи за синтаксиса на ООП-програмирането. Съществена част е достъпа до закрити свойства и че всеки метод автоматично се задейства според нужната операция: съществуване, присвояване, премахване.
П.П.
Очаквайте продължение ...
до нови срещи ^.^
0 Response to "Интерфейс ArrayAccess в PHP"
Публикуване на коментар