Trochę mnie tu nie było, ale przyglądam się właśnie php 5, po raz pierwszy zastanawiam się nad praktycznym wykorzystanie OOP w php i chodzi mi po głowie szatański pomysł na budowę aplikacji wielokrotnego wykorzystania, który chciałem z Wami przedyskutować.
Weźmy przykład sklepów, które piszemy raz a potem adoptujemy do potrzeb konkretnego klienta. Chcemy przy tym zachować odpowiednią separację logiki bazowej sklepu od logiki na potrzeby konkretnego klienta, żeby np. błąd poprawiony w konkretnej wersji bazowej od razu można było poprawić w konkretnym sklepie bez copy & paste'a.
W php można w wygodny sposób stosować programowanie oparte o komponenty, czyli np. piszemy plik Koszyk.class.php, w którym zawarty jest bazowy koszyk. Następnie piszemy klasę KoszykDlaKlientaA.class.php, która rozszerza pierwszą klasę i tym różni się od Koszyk.class.php, że podaje wartość koszyka bez podatku VAT.
Następnie tworzymy plik CompManager.class.php:
<?php // include(Koszyk.class.php); - to podmieniamy z wersji bazowej na: include(KoszykDlaKlientaA.php); class CompManager { // było return new Koszyk; return new KoszykDlaKlientaA; } } ?>
Czy z tym static w php dobrze zrozumiałem to nie wiem, bo manual jest dość ograniczony, ale chodzi mi o to, żeby można było zrobić
<?php $koszyk = CompManager->getKoszykInstance(); ?>
bez tworzenia konkretnej instancji obiektu CompManager, ale nie jest to wymagane. I tym sposobem mamy specyficzną dla danego systemu instancję klasy zawsze daną jak wyżej.
I teraz właściwa prośba: czy ktoś ma jakieś komentarze, uwagi, sugestie? Być może są fajne frameworki do tego typu zastosowań, podobne do Spring Framework lub WW2 w Javie, których nie znalazłem, a być może ktoś ma szersze doświadczenia z taką architekturą i zechciałby się nimi podzielić ze mną i resztą forumowiczów?