Punta de Choros

27 декември 2009

На 2009г й оставаха 120ч съществуване. От календара падна поредния лист с дата 27 декември и към 10.30ч сутринта ме събуди звън от телефона.

Инсталация на Microsoft шрифтове в Ubuntu 16.04

14 януари 2017

нсталация на Microsoft шрифтове в Ubuntu се поражда от идеята браузърите в различните системи, да показват еднакво текстовото съдържанието на интернет страниците.

Ubuntu 16.04 инсталация на USB disk on Key

19 ноември 2016

Арсеналът ми от мобилни компютри съдържа Fujitsu Lifebook AH530. Това е бюджетна машина от 2011г на Intel Core i5-480M процесор и 4GB DDR3 RAM памет.

gparted

Paragon ExtFS for Windows

30 юли 2016

ExtFS for Windows е утилита на Paragon Software разработена през 2013г. Тя представлява решение, предоставящо пълен достъп на четене и на запис до раздели ...

msvcr100.dll is missing Windows 10

04 октомври 2016

Майк Патерсън от Plixer, компания по компютърната сигурност, публикува доклад , че Windows 10 изпраща данни в криптиран вид от вашата машина на всеки пет минути. Той е направил максимума, за да спре изтичането, но системата продължавала да изпраща информация.


В стандартното съдържание на PHP има няколко интересни интерфейса и един от тях е ArrayAccess. Този интерфейс съществено изменя поведението на обектите в езика. На практика, ArrayAccess позволява обръщение към обекта по подобие на масив ползувайки познатото

$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

За програмист на процедурен код това е повече от типично. Няма ги стрелките, двойните точки, присъщи за синтаксиса на ООП-програмирането. Съществена част е достъпа до закрити свойства и че всеки метод автоматично се задейства според нужната операция: съществуване, присвояване, премахване.

П.П.
Очаквайте продължение ...






до нови срещи   ^.^
11.01.2014 profruit 


0 Response to "Интерфейс ArrayAccess в PHP"

Публикуване на коментар

Този блог е реинкарнация на първите ми опити за споделяне в нета. На времето започнах с къси разкази на преживяното. После се обезсмисли и превърнах блога си в системно радио. Пиша единствено неща, които карат душата ми да живее: Ubuntu, WEB, Photoshop, Фотография, Споделено и т.н. Това е моето системно радио, разбирате ли? Моята вълна и вие сте на нея сега.

Архив на блога