Napisany sie-10-2008
obiekty jak tablice w PHP cz. 1
W poście postaram się przedstawić metody, dzięki którym dostęp do właściwości obiektu, będzie identyczny jak w przypadku tablic.
Na początku załóżmy że mamy prostą klasę.
class Iterujemy {
public $a;
public function __construct () {
$this->a = 1;
}
}
W tym przypadku aby zmienić właściwość $a, musimy użyć następującego zapisu:
$obj = new Iterujemy(); $obj->a = 5;
A co powiecie, abyśmy umożliwili sobie dostęp do właściwości w ten sposób:
$obj = new Iterujemy(); $obj['a'] = 5;
Interfejs ArrayAccess
Wszystko co nam potrzebne do szczęścia to zaimplementowanie interfejsu ArrayAcces dla naszej klasy Iterujemy. Posiada on 4 funkcje:
- offsetExists ($name)
- offsetSet ($name,$value)
- offsetGet ($name)
- offsetUnset ($name)
Przykład użycia:
class Iterujemy implements ArrayAccess {
public $a = 6;
public function __construct () {
}
public function offsetExists ($name) {
if (isset($this->$name))
return TRUE;
else
return FALSE;
}
public function offsetUnset ($name) {
unset($this->$name);
}
public function offsetGet($name) {
return $this->$name;
}
public function offsetSet($name,$value) {
$this->$name = $value;
}
}
Wyjaśnijmy sobie działanie poszczególnych funkcji:
public function offsetExists ($name) - sprawdza czy istnieje właściwość $name.public function offsetUnset ($name) - usuwa właściwość $name.
public function offsetGet ($name) - zwraca wartość właściwości $name.
public function offsetSet ($name,$value) - ustawia wartość właściwości $name na $value.
I w ten prosty sposób mamy dostęp do własciwości obiektu klasy, jak do tablicy. Należy pamiętać, że jest to możliwe tylko dla modyfikatora public.

Jesteś pewny, że w tych funkcjach ma być
? Przecież odwołujesz się do parametru funkcji, a nie do składnika klasy, bo takiego składnika tam zresztą nie ma
W PHP można dynamicznie dla obiektu klasy tworzyć jego właściwości. Cytowany zapis szuka właściwości o nazwie zawartej w zmiennej $name. Przykład TUTAJ. Mam nadzieje, że wyjaśni. Czekam na ewentualne pytania.