Sytuacja wygląda tak, że chcąc skorzystać z pełni możliwości OOP, mając na uwadze przyszłą rozbudowę mojego projektu zacząłem pisać klasy na wzór:
<?php interface servers { ... metody } ?>
i klasy implementujące w/w intefejs:
<?php class a implements servers {} class b implements servers {} class c implements servers {} // i nie wiadomo ile innych ?>
i tu pojawił mi się problem. Taki sposób uniemożliwia deklarację wspólnych zmiennych (np. $dbh, $url) i definiowania metod prywatnych w interfejsie. Tworzenie osobnych nie implementowanych metod w każdej z klas mija się wtedy z celem,
bo przecież to samo mogę robić w rozszerzonej klasie. Z interfejsu chciałem korzystać, ze względu na możliwość ładnego planowania kodu.
Może ameryki nie odkryłem, jednak dopiero poznaję porządniej aspekty OOP w PHP5.
Tak więc jaki sposób kodowania wg. was będzie bardziej czytelny?
I jeszcze jedno pytanie na przyszłość:
Będę już miał napisane klasy a,b,c. I teraz jak się do nich odwoływać "na zawołanie". Czy robić coś w stylu:
<?php switch($this->_rqst) { case 'a': $srv = new a($this->_dbh); break; case 'b': $srv = new b($this->_dbh); break; case 'c': $srv = new c($this->_dbh); break; } $srv->connect(); ?>
lub
<?php class jakisKontroler { .... private function _InitA() { $srv = new a($this->_dbh); return $srv; } private function _InitB() { $srv = new b($this->_dbh); return $srv; } public function init() { .... $srv = $this->_InitA(); return $srv; } } ?>
czy może __autoload albo inny ciekawy sposób?