Интерфейс для обеспечения доступа к объектам в виде массивов.
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
0 комментариев