- var_dump: documentation ( source)
- array_key_exists: documentation ( source)
<?php
class ArrayObjectChild extends ArrayObject {
public function offsetExists($offset) {
var_dump('Called: '.__METHOD__);
return parent::offsetExists($offset);
}
public function offsetGet($offset) {
var_dump('Called: '.__METHOD__);
return parent::offsetGet($offset);
}
}
class ArrayAcessImplementation implements ArrayAccess {
private $_array = array();
public function __construct(array $array) {
$this->_array = $array;
}
public function offsetExists($offset) {
var_dump('Called: '.__METHOD__);
return array_key_exists($offset);
}
public function offsetGet($offset) {
var_dump('Called: '.__METHOD__);
return $this->_array($offset);
}
public function offsetSet($offset, $value) {}
public function offsetUnset($offset) {}
}
$array = array('foo' => '');
// ArrayObject: empty string is set, but empty
$object = new ArrayObject($array);
var_dump(isset($object['foo']), empty($object['foo']));
// ArrayObject extended: empty string is set, but not empty
$object = new ArrayObjectChild($array);
var_dump(isset($object['foo']), empty($object['foo']));
// ArrayAccess implemented: empty string is set, but empty
$object = new ArrayAcessImplementation($array);
var_dump(isset($object['foo']), empty($object['foo']));