![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 30.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
Witam wszystkich forumowiczów,
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:
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ć
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? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 0 Dołączył: 29.08.2004 Skąd: POLAND Ostrzeżenie: (0%) ![]() ![]() |
$klasa::funkcja();
powinno chodzić. :-) |
|
|
![]() ![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 115 Pomógł: 1 Dołączył: 15.01.2003 Ostrzeżenie: (0%) ![]() ![]() |
a nie $instancja->funkcja() ? (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 521 Pomógł: 0 Dołączył: 3.11.2003 Skąd: 3city Ostrzeżenie: (0%) ![]() ![]() |
1) Olej funkcje statyczne, przecież chciałeś mieć OOP. Zrób sobie normalny singletonowy rejestr i tyle. Takie wykorzystanie funkcji statycznych jest złe. Obiekt to jest "coś", a jak nie masz w ogóle obiektu to te zmienne statyczne są zawieszone w próżni. Nie można nawet tego zserializować...
2) Jeżeli już ma być taki CompManager, to absolutnie nie taki, gdzie trzeba za każdym razem grzebać w kodzie. I zmiana jednego koszyka wymaga kilku modyfikacji. W końcu system się rozwali, zrobisz błąd, pogubisz się, itd. Zrób sobie po prostu plik XML ze specyfikacją komponentów i generuj z tego kod php, przy okazji walidując czy nie wpisano nie istniejącej klasy. Przewagi takiego rozwiązania są oczywiste i niezliczone. A skoro PHP5, to masz masz bardzo dobrą obsługę XML i napisanie takiego parsera jest banalne. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 22:54 |