$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"
Публикуване на коментар