2 changed files with 217 additions and 38 deletions
@ -0,0 +1,163 @@ |
|||
--TEST-- |
|||
SPL: Bug #66834 |
|||
--FILE-- |
|||
<?php |
|||
|
|||
// overrides both offsetExists and offsetGet |
|||
class ArrayObjectBoth 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); |
|||
} |
|||
} |
|||
|
|||
// overrides only offsetExists |
|||
class ArrayObjectExists extends ArrayObject |
|||
{ |
|||
public function offsetExists($offset) { |
|||
var_dump('Called: '.__METHOD__); |
|||
return parent::offsetExists($offset); |
|||
} |
|||
} |
|||
|
|||
// overrides only offsetGet |
|||
class ArrayObjectGet extends ArrayObject |
|||
{ |
|||
public function offsetGet($offset) { |
|||
var_dump('Called: '.__METHOD__); |
|||
return parent::offsetGet($offset); |
|||
} |
|||
} |
|||
|
|||
// overrides only offsetGet and offsetSet |
|||
class ArrayObjectGetSet extends ArrayObject |
|||
{ |
|||
public function offsetGet($offset) |
|||
{ |
|||
return parent::offsetGet(str_rot13($offset)); |
|||
} |
|||
|
|||
public function offsetSet($offset, $value) |
|||
{ |
|||
return parent::offsetSet(str_rot13($offset), $value); |
|||
} |
|||
} |
|||
|
|||
$values = ['foo' => '', 'bar' => null, 'baz' => 42]; |
|||
|
|||
echo "==== class with offsetExists() and offsetGet() ====\n"; |
|||
$object = new ArrayObjectBoth($values); |
|||
var_dump($object->offsetExists('foo'), isset($object['foo']), empty($object['foo'])); |
|||
var_dump($object->offsetExists('bar'), isset($object['bar']), empty($object['bar'])); |
|||
var_dump($object->offsetexists('baz'), isset($object['baz']), empty($object['baz'])); |
|||
var_dump($object->offsetexists('qux'), isset($object['qux']), empty($object['qux'])); |
|||
|
|||
echo "==== class with offsetExists() ====\n"; |
|||
$object = new ArrayObjectExists($values); |
|||
var_dump($object->offsetExists('foo'), isset($object['foo']), empty($object['foo'])); |
|||
var_dump($object->offsetExists('bar'), isset($object['bar']), empty($object['bar'])); |
|||
var_dump($object->offsetexists('baz'), isset($object['baz']), empty($object['baz'])); |
|||
var_dump($object->offsetexists('qux'), isset($object['qux']), empty($object['qux'])); |
|||
|
|||
echo "==== class with offsetGet() ====\n"; |
|||
$object = new ArrayObjectGet($values); |
|||
var_dump($object->offsetExists('foo'), isset($object['foo']), empty($object['foo'])); |
|||
var_dump($object->offsetExists('bar'), isset($object['bar']), empty($object['bar'])); |
|||
var_dump($object->offsetexists('baz'), isset($object['baz']), empty($object['baz'])); |
|||
var_dump($object->offsetexists('qux'), isset($object['qux']), empty($object['qux'])); |
|||
|
|||
echo "==== class with offsetGet() and offsetSet() ====\n"; |
|||
$object = new ArrayObjectGetSet; |
|||
$object['foo'] = 42; |
|||
var_dump($object->offsetExists('foo'), $object->offsetExists('sbb'), isset($object['foo']), isset($object['sbb'])); |
|||
|
|||
?> |
|||
--EXPECTF-- |
|||
==== class with offsetExists() and offsetGet() ==== |
|||
string(37) "Called: ArrayObjectBoth::offsetExists" |
|||
string(37) "Called: ArrayObjectBoth::offsetExists" |
|||
string(34) "Called: ArrayObjectBoth::offsetGet" |
|||
string(37) "Called: ArrayObjectBoth::offsetExists" |
|||
string(34) "Called: ArrayObjectBoth::offsetGet" |
|||
bool(true) |
|||
bool(true) |
|||
bool(true) |
|||
string(37) "Called: ArrayObjectBoth::offsetExists" |
|||
string(37) "Called: ArrayObjectBoth::offsetExists" |
|||
string(34) "Called: ArrayObjectBoth::offsetGet" |
|||
string(37) "Called: ArrayObjectBoth::offsetExists" |
|||
string(34) "Called: ArrayObjectBoth::offsetGet" |
|||
bool(true) |
|||
bool(false) |
|||
bool(true) |
|||
string(37) "Called: ArrayObjectBoth::offsetExists" |
|||
string(37) "Called: ArrayObjectBoth::offsetExists" |
|||
string(34) "Called: ArrayObjectBoth::offsetGet" |
|||
string(37) "Called: ArrayObjectBoth::offsetExists" |
|||
string(34) "Called: ArrayObjectBoth::offsetGet" |
|||
bool(true) |
|||
bool(true) |
|||
bool(false) |
|||
string(37) "Called: ArrayObjectBoth::offsetExists" |
|||
string(37) "Called: ArrayObjectBoth::offsetExists" |
|||
string(37) "Called: ArrayObjectBoth::offsetExists" |
|||
bool(false) |
|||
bool(false) |
|||
bool(true) |
|||
==== class with offsetExists() ==== |
|||
string(39) "Called: ArrayObjectExists::offsetExists" |
|||
string(39) "Called: ArrayObjectExists::offsetExists" |
|||
string(39) "Called: ArrayObjectExists::offsetExists" |
|||
bool(true) |
|||
bool(true) |
|||
bool(true) |
|||
string(39) "Called: ArrayObjectExists::offsetExists" |
|||
string(39) "Called: ArrayObjectExists::offsetExists" |
|||
string(39) "Called: ArrayObjectExists::offsetExists" |
|||
bool(true) |
|||
bool(false) |
|||
bool(true) |
|||
string(39) "Called: ArrayObjectExists::offsetExists" |
|||
string(39) "Called: ArrayObjectExists::offsetExists" |
|||
string(39) "Called: ArrayObjectExists::offsetExists" |
|||
bool(true) |
|||
bool(true) |
|||
bool(false) |
|||
string(39) "Called: ArrayObjectExists::offsetExists" |
|||
string(39) "Called: ArrayObjectExists::offsetExists" |
|||
string(39) "Called: ArrayObjectExists::offsetExists" |
|||
bool(false) |
|||
bool(false) |
|||
bool(true) |
|||
==== class with offsetGet() ==== |
|||
string(33) "Called: ArrayObjectGet::offsetGet" |
|||
string(33) "Called: ArrayObjectGet::offsetGet" |
|||
bool(true) |
|||
bool(true) |
|||
bool(true) |
|||
string(33) "Called: ArrayObjectGet::offsetGet" |
|||
string(33) "Called: ArrayObjectGet::offsetGet" |
|||
bool(true) |
|||
bool(false) |
|||
bool(true) |
|||
string(33) "Called: ArrayObjectGet::offsetGet" |
|||
string(33) "Called: ArrayObjectGet::offsetGet" |
|||
bool(true) |
|||
bool(true) |
|||
bool(false) |
|||
bool(false) |
|||
bool(false) |
|||
bool(true) |
|||
==== class with offsetGet() and offsetSet() ==== |
|||
|
|||
Notice: Undefined index: foo in %s on line %d |
|||
bool(false) |
|||
bool(true) |
|||
bool(false) |
|||
bool(false) |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue