<?php
class Outside {
private $data;
public function __construct($data) {
$this->data = $data;
}
public function getArrayAccess() {
return new class($this->data) extends Outside implements ArrayAccess {
public function offsetGet($offset) { return $this->data[$offset]; }
public function offsetSet($offset, $data) { return ($this->data[$offset] = $data); }
public function offsetUnset($offset) { unset($this->data[$offset]); }
public function offsetExists($offset) { return isset($this->data[$offset]); }
};
}
}
$outer = new Outside('testingdata');
$test = $outer->getArrayAccess()->offsetGet(3);
var_dump($test);
Deprecated: Return type of Outside@anonymous::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/pJmnB on line 15
Deprecated: Return type of Outside@anonymous::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/pJmnB on line 12
Deprecated: Return type of Outside@anonymous::offsetSet($offset, $data) 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/pJmnB on line 13
Deprecated: Return type of Outside@anonymous::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/pJmnB on line 14
Warning: Undefined property: Outside@anonymous::$data in /in/pJmnB on line 12
Warning: Trying to access array offset on null in /in/pJmnB on line 12
NULL
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
Deprecated: Return type of Outside@anonymous::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/pJmnB on line 15
Deprecated: Return type of Outside@anonymous::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/pJmnB on line 12
Deprecated: Return type of Outside@anonymous::offsetSet($offset, $data) 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/pJmnB on line 13
Deprecated: Return type of Outside@anonymous::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/pJmnB on line 14
Warning: Undefined property: Outside@anonymous::$data in /in/pJmnB on line 12
Warning: Trying to access array offset on null in /in/pJmnB on line 12
NULL
Output for 8.1.0 - 8.1.28, 8.2.0 - 8.2.18
Deprecated: Return type of Outside@anonymous::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/pJmnB on line 15
Deprecated: Return type of Outside@anonymous::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/pJmnB on line 12
Deprecated: Return type of Outside@anonymous::offsetSet($offset, $data) 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/pJmnB on line 13
Deprecated: Return type of Outside@anonymous::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/pJmnB on line 14
Warning: Undefined property: Outside@anonymous::$data in /in/pJmnB on line 12
Warning: Trying to access array offset on value of type null in /in/pJmnB on line 12
NULL
Output for 8.0.0 - 8.0.30
Warning: Undefined property: Outside@anonymous::$data in /in/pJmnB on line 12
Warning: Trying to access array offset on value of type null in /in/pJmnB on line 12
NULL
Output for 7.4.0 - 7.4.33
Notice: Undefined property: class@anonymous::$data in /in/pJmnB on line 12
Notice: Trying to access array offset on value of type null in /in/pJmnB on line 12
NULL