PHP vendégkönyv objektum orientált megközelítésben. Hogyan is csináljam?
Szóval a kérdés adott. Milyen objektumokat használjak egy vendégkönyvnél:
database.class -> feltételezem egyértelmű
validate.class -> szabályaimnak megfelelőek-e az inputok...
cpatcha.class -> szöveges matematikai captcha (öt plusz öt stb...)
html.class -> itt csak a form van...
Kell-e esetleg egy vendégkönyv class is, vagy arra nincs szükség mert amikor submit-olják a formot, akkor egy script meghívódik és az olyan mint egy controller?
BUÉK
Ez a megközelítés így nem teljesen objektum orientált azért.
Attól, hogy osztályokat teszel bele, még nem lesz minden OOP azonnal.
Alapvetően úgy kéne nézni a rendszert, hogy mondjuk maguk a bejegyzések egy "bejegyzés" osztály objektumai mondjuk.
Az itt felsoroktakból osztályként max az adatbázisnak és a captcha-nak van értelme, a többinek nem.
Az input validálást magába a post mentésébe kellene már betenni, hogy megfelelő adatokat akar-e tárolni az ember.
A HTML pedig megint egy másik dolog.
Én így csinálnám:
class.post.php
class.db.php
class.post_handle.php
class.validate.php (egy kis vendégkönyv esetén én lehet, hogy létre sem hoznám ezt az osztályt)
class.captcha.php
class.db.php osztályt a PDO-ból származtatnám, egyetlen tulajdonsága lenne, mondjuk egy db_handle amit egyenlővé tennék a konstruktorban a PDO-ból példányosított objektummal. Mást nem tennék bele.
class.post.php lenne a bejegyzés "sablonja". Szóval ebből az osztályból példányosított objektumok a következő metódusokkal rendelkeznének pl.: getTitle(), getContent(), getDate(), getId() stb. stb.
class.post_handle.php osztályt a class.db.php-ből származtatnám, így a $this->db_handle tulajdonságon kereszetül már közvetlenül tud kommunikálni az adatbázissal. Olyan metódusai lennének mint pl.:
getAll() - (visszaadja az összes bejegyzést egy tömbben melynek minden eleme egy class.post.php-ből példányosított objektum)
getById() - (visszaadja az adott id-vel rendelkező posztot objektumként)
insertPost($post_obj) - Adatbázisba írja az új postot, paraméterként egy post objektumot vár
stb. stb. stb.
A validate-re azért írtam, hogy nem biztos, hogy beletenném, mert ha csak egy nevet és egy szövegmezőt validálsz kb, akkor azt megteheted akár rögtön a PostHandle osztály insertPost() metódusában rögtön. Persze ha szeretnéd a validálást kiteheted külön osztályba is.
Én valószínűleg így gondolkoznék, remélem tudtam segíteni.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!