Интерфейс для обеспечения доступа к объектам в виде массивов.

interface ArrayAccess {
/* Methods */
public offsetExists(mixed $offset): bool
public offsetGet(mixed $offset): mixed
public offsetSet(mixed $offset, mixed $value): void
public offsetUnset(mixed $offset): void
}

Пример #1 Базовое использование

<?php
class Obj implements ArrayAccess {
    private $container = array();

    public function __construct() {
        $this->container = array(
            "one"   => 1,
            "two"   => 2,
            "three" => 3,
        );
    }

    public function offsetSet($offset, $value) {
        if (is_null($offset)) {
            $this->container[] = $value;
        } else {
            $this->container[$offset] = $value;
        }
    }

    public function offsetExists($offset) {
        return isset($this->container[$offset]);
    }

    public function offsetUnset($offset) {
        unset($this->container[$offset]);
    }

    public function offsetGet($offset) {
        return isset($this->container[$offset]) ? $this->container[$offset] : null;
    }
}

$obj = new Obj;

var_dump(isset($obj["two"]));
var_dump($obj["two"]);
unset($obj["two"]);
var_dump(isset($obj["two"]));
$obj["two"] = "A value";
var_dump($obj["two"]);
$obj[] = 'Append 1';
$obj[] = 'Append 2';
$obj[] = 'Append 3';
print_r($obj);
?>

ArrayAccess::offsetExists

ArrayAccess::offsetExists — Существует ли смещение

public ArrayAccess::offsetExists(mixed $offset): bool

Независимо от того, существует ли смещение.

Этот метод выполняется при использовании isset() или empty() для объектов, реализующих ArrayAccess .

Параметры:

  • offset - Смещение для проверки.

Пример #1 Пример использования ArrayAccess::offsetExists()

<?php
class obj implements arrayaccess {
    public function offsetSet($offset, $value) {
        var_dump(__METHOD__);
    }
    public function offsetExists($var) {
        var_dump(__METHOD__);
        if ($var == "foobar") {
            return true;
        }
        return false;
    }
    public function offsetUnset($var) {
        var_dump(__METHOD__);
    }
    public function offsetGet($var) {
        var_dump(__METHOD__);
        return "value";
    }
}

$obj = new obj;

echo "Runs obj::offsetExists()\n";
var_dump(isset($obj["foobar"]));

echo "\nRuns obj::offsetExists() and obj::offsetGet()\n";
var_dump(empty($obj["foobar"]));

echo "\nRuns obj::offsetExists(), *not* obj:offsetGet() as there is nothing to get\n";
var_dump(empty($obj["foobaz"]));
?>

ArrayAccess::offsetGet

ArrayAccess::offsetGet — Смещение для получения

public ArrayAccess::offsetGet(mixed $offset): mixed

Возвращает значение по указанному смещению. Этот метод выполняется при проверке, является ли offset empty() .

ArrayAccess::offsetSet

ArrayAccess::offsetSet — Присвоить значение указанному смещению

public ArrayAccess::offsetSet(mixed $offset, mixed $value): void

Параметры:

  • offset - Смещение, которому присваивается значение.
    value - Значение для установки.

Параметр offset будет установлен, null если другое значение недоступно, как в следующем примере.

<?php
$arrayaccess[] = "first value";
$arrayaccess[] = "second value";
print_r($arrayaccess);
?>

Выведет:

Array
(
    [0] => first value
    [1] => second value
)

ArrayAccess::offsetUnset

ArrayAccess::offsetUnset — Отменяет смещение

public ArrayAccess::offsetUnset(mixed $offset): void