Hirdetés
- Samsung Galaxy A54 - türelemjáték
- iPhone topik
- Netfone
- Vivo X300 Pro – messzebbre lát, mint ameddig bírja
- Honor Magic5 Pro - kamerák bűvöletében
- Google Pixel topik
- Huawei Watch GT 6 és GT 6 Pro duplateszt
- Fele annyit ér az iPhone Air, mint amennyibe pár hete került
- Samsung Galaxy S21 és S21+ - húszra akartak lapot húzni
- Samsung Galaxy Fit 3 - keveset, de jól
Ú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
- Milyen alaplapot vegyek?
- Milyen asztali médialejátszót?
- SSD kibeszélő
- Intel GPU-k jövője - amit tudni vélünk
- Folyószámla, bankszámla, bankváltás, külföldi kártyahasználat
- World of Tanks - MMO
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Hullanak a fejek az Apple-nél
- Assetto Corsa Rally
- Formula-1
- További aktív témák...
- Huawei P30 Pro 128GB,Újszerű,Dobozával,12 hónap garanciával
- Huawei P30 Pro 256GB,Átlagos,Adatkabel,12 hónap garanciával
- Apple iPhone 12 128GB,Átlagos,Adatkabel,12 hónap garanciával
- -ÚJ,2 ÉV GAR- GAMER PC: RYZEN 7 5700/5800X +RX 6600/6700XT +16-64GB DDR4! SZÁMLA! 70 féle ház!
- MacBook AIR 13 M1 CHIP! 8GB/256GB SSD Magyar! Fulldoboz! Akkumlátor 88%!
- BESZÁMÍTÁS! ASUS TUF A17 FA707NV notebook - R7 7735HS 16GB DDR5 1TB SSD nVidia RTX 4060 8GB WIN11
- MacBook felvásárlás!! Macbook, Macbook Air, Macbook Pro
- GYÖNYÖRŰ iPhone 12 mini 128GB Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS3853, 100% Akkumulátor
- Telefon szerviz helyben - Gyors javítás, akár 30 perc alatt!
- Lenovo magyar laptop billentyűzetre van szükséged? Akármelyik verzióban segítünk!
Állásajánlatok
Cég: BroadBit Hungary Kft.
Város: Budakeszi
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest



