Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Kody rabatowe - pomysły
Forum PHP.pl > Forum > Przedszkole
SmokAnalog
Cześć,

chcę stworzyć system kodów rabatowych dla sklepu. Robię projekt dla zabawy i nauki, więc proszę nie odsyłajcie mnie do gotowych projektów smile.gif

Interesuje mnie dyskusja o możliwych sposobach implementacji systemu rabatowego. Chciałbym, by system pozwalał na jak najbardziej elastyczne tworzenie rabatów na podstawie różnych kryteriów, na przykład:

Cytat
Wpisując przy zamówieniu kod ABC123, otrzymasz rabat 30% na wszystkie produkty z kategorii Gry, ale maksymalnie do 5-ciu sztuk. Rabat naliczany do 5-ciu najdroższych zamówionych gier.


Moje pomysły to:
  1. Do każdego kodu podpięty kod PHP z obliczaniem rabatu. Nie podoba mi się zbytnio ten pomysł, bo dodawanie pliku jest czasochłonne.
  2. Textarea z kodem PHP do wyliczenia wartości rabatu w eval().
  3. Własny metajęzyk z dostępem do zawartości koszyka w postaci specjalnych tagów. Bardzo pracochłonne w implementacji i nie tak elastyczne jak dwa poprzednie.


Jak Wy byście to rozwiązali? Zależy mi na możliwości podawania złożonych kryteriów dla kodów.
Pyton_000
Wszystkie 3 są okropne a eval() to już masakra.

Ja bym poszedł jednak w predefiniowane rabaty a potem zrobił z tego zestaw klas.
Potem każdemu kodowi przypisujesz listę obiektów które zaaplikują wybrane mechanizmy na koszyku np:

TotalAmmountDiscount::class
GamesDiscount::class

Przekazujesz koszyk do takiego obiektu i on zwraca Ci kwotę rabatu.

To jest jeden ze sposobów.
SmokAnalog
Ten Twój pomysł to jest to samo, co ten okropny pomysł nr 1, bo jaka jest niby elastyczność w dodawaniu klas typu GamesDiscount? To też jest okropne sad.gif Poza tym dodawać klasę tylko po to, żeby zastosować ją do pojedynczego kodu?
Pyton_000
Stosując wzorzec Dekorator możesz zastosować dowolnie przypadki rabatowe.
SmokAnalog
Też o tym myślałem, ale to jednak też w wielu przypadkach będzie ograniczać elastyczność rabatów, a poza tym musiałbym używać ich z parametrami. Jest to jednak chyba blisko złotego środka między bezpieczeństwem a użytecznością, bo mógłbym zapisywać w bazie łańcuch dekoratorów razem z wartościami parametrów.
Pyton_000
Z doświadczenia wiem że im więcej pozwolisz na swobodę tym gorzej bo łatwiej jest coś rozjebać i trudniej zdebugować.
SmokAnalog
No owszem, ale czy w tym przypadku ta złota myśl też znajduje uzasadnienie? Kod rabatowy to część planu biznesowego i nikogo nie obchodzi, że coś byłoby niebezpieczne w implementacji. Nie nazwałbym tego "swobodą".
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.