Quelle interface PHP SPL permet aux objets de le faire:Quelle interface PHP permet d'accéder aux propriétés des objets avec la notation de tableau?
$object->month = 'january';
echo $object['month']; // january
$record['day'] = 'saturday';
echo $record->day; // saturday
par exemple comme dans les bibliothèques comme Doctrine (Doctrine_Record)
comment puis-je implémenter cela? J'ai essayé d'utiliser ArrayObject, mais ils ne se comportent pas comme je le pensais.
à savoir
$object = new ArrayObject();
$object['a'] = 'test';
$object['a'] == $object->a; // false
EDIT:
J'ai essayé une implémentation barebone que j'ai appelé Array,.
class Arrayable implements ArrayAccess
{
protected $container = array();
# implement ArrayAccess methods to allow array notation
# $object = new Arrayable();
# $object['value'] = 'some data';
function offsetExists($offset)
{
return isset($this->container[$offset]);
}
function offsetGet($offset)
{
return $this->container[$offset];
}
function offsetSet($offset, $value)
{
$this->container[$offset] = $value;
}
function offsetUnset($offset)
{
unset($this->container[$offset]);
}
# now, force $object->value to map to $object['value']
# using magic methods
function __set($offset, $value)
{
$this->offsetSet($offset, $value);
}
function __get($offset)
{
return $this->offsetGet($offset);
}
}
L'OP veut savoir comment accéder à l'objet avec la notation de tableau, par exemple '$ object ['month']' en plus de '$ object-> month'. – Gordon