Hirdetés
- Andras-G: Az internet veszélyei [2. rész] - Facebook Marketpalce
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Luck Dragon: Asszociációs játék. :)
- Luck Dragon: Alza kuponok – aktuális kedvezmények, tippek és tapasztalatok (külön igényre)
- mefistofeles: Az elhízás nem akaratgyengeség! 2 Ahogy én csinálom.......
- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- ldave: New Game Blitz - 2026
- gban: Ingyen kellene, de tegnapra
- Geri Bátyó: Ezt pedig azért, mert...
Új hozzászólás Aktív témák
-
Sk8erPeter
nagyúr
válasz
Alukard
#6929
üzenetére
Szerintem adatbázis-kapcsolati objektumok létrehozásához érdemes lehet a Singleton-mintát alkalmazni. Többnyire az embernek dinamikus weblapok készítésekor egyetlen adatbázis-kapcsolati objektumra van szüksége, persze lehetnek kivételek, de általában előbbi a jellemző.
A kódodban a protected láthatóságú tagváltozóknak semmi szerepe nincs, mivel nem rendeled hozzájuk az értékeket (nincs ilyen sor: $this->sql_host = "localhost"; stb.), hanem csupán lokális érvényességű változóid vannak (pl. $sql_host), így azoknak nem sok értelme van. Mivel tulajdonképpen úgyis csak egyetlen helyen (connect() függvény) csatlakozol az adatbázishoz, nem biztos, hogy érdemes egyáltalán eltárolni ezeket az értékeket az objektumon és leszármazottain belül máshol is elérhető tagváltozókba.
A "var" kulcsszó használata elavult, és igazából értelmetlen is jelen esetben, az nyugodtan lehetne protected (vagy private, de akkor a leszármazottak nem látják).
Az előbbieken túl a $query-ket sehol nem ellenőrzöd, nem kerülöd el az esetleges SQL Injectiont vagy rosszindulatot nem feltételezve csupán esetleges hibákat azzal, hogy escape-eled az átadott stringet (mysql_real_escape_string).
Plusz ha már OOP, akkor már kivételeket is illendő lenne használni, ez a die() ill. ekvivalense, az exit() nagyon ronda megoldás, ahelyett, hogy a megfelelő helyeken kezelnéd az egyes hibákat, egyből leállítod a szkript futását.
Ezenkívül a hibaüzenetbe is muszáj belekötnöm: ez a "Ne zaklasd a rendszergazdát" elég furcsa egy hibaüzenet, inkább neked kéne elnézést kérned a júzertől, hogy para van az adatbázissal, nem még jól le is cseszni.
Én személy szerint a PDO-t használom, és ajánlom is a használatát. Támogatja az adatkötést, plusz azt, hogy ne kelljen explicite mindenhol escape-elni a stringeket (elintézi magának), és még sok egyebet, ráadásul full objektumorientált, és szerintem áttekinthetővé teszi a kódot.
Feltettem pastebinre azt az osztályt, amit a Singleton-mintának megfelelően írtam, általában ezt az osztályt használom adatbázis-kapcsolat kiépítésére. A konstruktor és a copy konstruktor privát láthatóságú, így kívülről nem példányosítható tetszőleges számban az objektum.
Van egy külön konfigfájlom, ahol definiálom a saját konstansokat, többek közt az adatbázis-jelszót és -felhasználónevet, ezeket a konstansdefiníciókat most az elejére tettem, középen jön maga az osztály, az osztály kódja alatt pedig egy példa látható a használatára: [PDO Singleton DB class].
Hátha bárki hasznát veszi.
Új hozzászólás Aktív témák
- P14s Gen5 14.5" 3K IPS Ultra 7 165H RTX 500 Ada 32GB 512GB NVMe magyar vbill ujjolv IR kam gar
- DJI Mini 3 RC drón szett - újszerű állapotban, táskával
- Asztali PC , i7 9700 , RX 6600 XT , 16GB DDR4 , 512GB NVME , 1TB HDD
- Microsoft Xbox Series X 1TB Játékkonzol 2 konti (kiegészítőkkel)
- ZBook Fury 17 G7 17.3" FHD IPS i7-10850H RTX 3000 32GB 512GB NVMe ujjolv IR kam gar
- Telefon felvásárlás!! Samsung Galaxy A50/Samsung Galaxy A51/Samsung Galaxy A52/Samsung Galaxy A53
- BESZÁMÍTÁS! ASUS Z790 i9 14900KF 64GB DDR5 1TB SSD RTX 5080 16GB LIAN LI LANCOOL 216R ADATA 850W
- Telefon felvásárlás!! Honor 200 Lite, Honor 200, Honor 200 Pro, Honor 200 Smart
- Telefon felvásárlás!! iPhone 16/iPhone 16 Plus/iPhone 16 Pro/iPhone 16 Pro Max
- darkFlash GR12 Darkstorm Blue/Green
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

