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.

Tagi : , ,

Komentarze:

Napisz komentarz