<?php
interface ArrayAccessInterface extends ArrayAccess
{
public function keyExists(string $offset): bool;
public function offsetIsset(string $offset): bool;
}
abstract class ArrayAccessAbstract implements ArrayAccessInterface
{
public function offsetExists($offset): bool
{
return static::offsetIsset((string) $offset);
}
}
class C extends ArrayAccessAbstract
{
public $data = array(
"foo" => null
);
public function keyExists(string $offset): bool
{
return array_key_exists($offset, $this->data);
}
public function offsetIsset(string $offset): bool
{
return isset($this->data[$offset]);
}
public function offsetGet($offset)
{
return $this->data[$offset];
}
public function offsetSet($offset, $value): void
{
$this->data[$offset] = $value;
}
public function offsetUnset($offset): void
{
unset($this->data[$offset]);
}
}
$o = new C();
var_dump(empty($o['foo']));
var_dump(isset($o['foo']));
var_dump($o->keyExists('foo'));
var_dump(property_exists($o, 'foo'));
#var_dump(array_key_exists('foo', $o));
#var_dump(array_key_exists('foo', ['foo' => null]));
Deprecated: Return type of C::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /in/GDOuR on line 30
bool(true)
bool(false)
bool(true)
bool(false)