<?php
class App_Collection implements ArrayAccess, IteratorAggregate, Countable
{
public $data = array();
public function count()
{
return count($this->data);
}
public function offsetExists($offset)
{
return (isset($this->data[$offset]));
}
public function offsetGet($offset)
{
if ($this->offsetExists($offset))
{
return $this->data[$offset];
}
return false;
}
public function offsetSet($offset, $value)
{
if ($offset)
{
$this->data[$offset] = $value;
}
else
{
$this->data[] = $value;
}
}
public function offsetUnset($offset)
{
unset($this->data[$offset]);
}
public function getIterator()
{
return new ArrayIterator($this->data);
}
}
echo "ArrayAccess:\n";
$collection = new App_Collection();
$collection['foo'] = 'bar';
var_dump(array_key_exists('foo', $collection));
echo "ArrayObject:\n";
$collection = new ArrayObject();
$collection['foo'] = 'bar';
var_dump(array_key_exists('foo', $collection));
Deprecated: Return type of App_Collection::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /in/gYeCM on line 12
Deprecated: Return type of App_Collection::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/gYeCM on line 17
Deprecated: Return type of App_Collection::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /in/gYeCM on line 26
Deprecated: Return type of App_Collection::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /in/gYeCM on line 38
Deprecated: Return type of App_Collection::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /in/gYeCM on line 43
Deprecated: Return type of App_Collection::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /in/gYeCM on line 7
ArrayAccess:
Fatal error: Uncaught TypeError: array_key_exists(): Argument #2 ($array) must be of type array, App_Collection given in /in/gYeCM:53
Stack trace:
#0 {main}
thrown in /in/gYeCM on line 53
Process exited with code 255.
Output for 8.0.0 - 8.0.30
ArrayAccess:
Fatal error: Uncaught TypeError: array_key_exists(): Argument #2 ($array) must be of type array, App_Collection given in /in/gYeCM:53
Stack trace:
#0 {main}
thrown in /in/gYeCM on line 53
Process exited with code 255.
Output for 7.4.0 - 7.4.33
ArrayAccess:
Deprecated: array_key_exists(): Using array_key_exists() on objects is deprecated. Use isset() or property_exists() instead in /in/gYeCM on line 53
bool(false)
ArrayObject:
Deprecated: array_key_exists(): Using array_key_exists() on objects is deprecated. Use isset() or property_exists() instead in /in/gYeCM on line 59
bool(true)