As Marcus explained, the flag ArrayObject::SPL_ARRAY_AS_PROPS means the array element may be used as a property if there is no conflict with visible properties.
If there are visible properties in the class, the array element will not overwrite it's value.
<?php
class Rules extends ArrayObject {
public $len = 1;
function __construct($array){
parent::__construct($array,ArrayObject::ARRAY_AS_PROPS);
$this['len'] = 2;
}
}
$x = new Rules(array(1,2));
echo $x->len;
?>
Result: 1
<?php
class Rules extends ArrayObject {
private $len = 1;
function __construct($array){
parent::__construct($array,ArrayObject::ARRAY_AS_PROPS);
$this['len'] = 2;
}
}
$x = new Rules(array(1,2));
echo $x->len;
?>
Result: 2