Przypuśćmy, że mamy do napisania klasę, która będzie importować dane w formie tablicy i je udostępniać (rzucam przykładem, aby zobrazowac jakie możliwości daje OOP).
Przypadek nr 1:
<?php final class MyConfigObject { { $this->_aParametrs = $aFields; } public function __get($sParam) { return null; return new MyConfigObject($this->_aParametrs[$sParam]); else return $this->_aParametrs[$sParam]; } public function __set($sParam, $mValue) { return $this->_aParametrs[$sParam] = $mValue; } } ?>
Użycie przypadka 1:
<?php 'field1' => 'value1', ); $oMyConfig = new MyConfigObject($aSampleArray); ?>
Plusy:
- traktujemy elementy tablicy jako obiekty, co jest zgodne z teorią OOP
- banalny wręcz dostęp do danych
- nie ma możliwości wykonania operacji for(), foreach() na elementach tablicy (jest obiektem)
<?php final class MyConfigArray implements ArrayAccess { { $this->_aParametrs = $aFields; } public function offsetGet($sParam) { return null; return new MyConfigArray($this->_aParametrs[$sParam]); else return $this->_aParametrs[$sParam]; } public function offsetSet($sParam, $mValue) { return $this->_aParametrs[$sParam] = $mValue; } public function offsetExists($sParam) { } public function offsetUnset($sParam) { } } ?>
Przykład uzycia sposobu nr 2:
<?php 'field1' => 'value1', ); $oMyConfig = new MyConfigArray($aSampleArray); ?>
Dzięki interfejsowi ArrayAcess otrzymujemy dostęp do danych obiektu jak do zwykłej tablicy, dlatego...
Plusy:
- Możemy posłużyć się danymi w for(), foreach()
- staroświedzki sposób dostępu z php 4
- nie traktujemy danych jako obiekty (przeciwne teorii OOP)
http://framework.vgroup.pl/expose-9a722aa0...965ef22bc4d.htm
Przykład drugi ma dobrego plusa: można użyć go jako normalnej tablicy, poslugując się chociażby for(), foreach(), count() itd.
Natomiast zastanawia mnie jeszcze jedna rzecz, a mianowicie połączenie tych dwóch sposobów dostępu do danych... wyszłaby ciekawa mieszanka, wartoby było spróbować.
Kwestię opinii pozostawiam Wam, być może nie dostrzegłem kolejnych plusów i minusów obu sposobów, być może niektóre z przedstawionych są błędne, zapraszam do dyskusji

Pozdrawiam, Athlan
