- Vezetékes FEJhallgatók
- Meghalt a Windows 10, éljen a Windows 10!
- Fejhallgató erősítő és DAC topik
- Kormányok / autós szimulátorok topikja
- Emelkedik a korábbi generációs Intel CPU-k ára
- TCL LCD és LED TV-k
- Milyen TV-t vegyek?
- Milyen videókártyát?
- Samsung Galaxy Tab S11 - tizenegyes
- Mindhárom Tab S9 vízálló lett
Ú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
- AKCIÓ!!! DDR5 GAMER PC: Intel Core Ultra 7 265KF +RX 9070/9070 XT +16-64GB DDR5! GAR/SZÁMLA!
- AKCIÓ! GAMER PC: i5-14400F (10mag/16szál) +RTX 5050/5060/5060Ti/5070/5080 +16-64GB DDR4! GAR/SZÁMLA!
- iPhone 13 Pro 126GB Gold Független 89% Gyári Akku iOS 17.3.
- Dell OptiPlex 7050 Micro i5-7500 / 8GB RAM / 256GB M.2 SSD
- Kompakt Gamer PC - i5-4750 + R9 380 4GB + 8 GB RAM
- Honor 200 pro 512GB,Újszerű,Dobozával,12 hónap garanciával
- BESZÁMÍTÁS! MSI B450 R5 5500 16GB DDR4 512B SSD GTX 1070 8GB Chieftec BD-25B-350GPB Zalman 500W
- Lenovo ThinkPad T15 Gen1 Intel Core i5-10210U
- ÁRGARANCIA!Épített KomPhone Ryzen 5 9600X 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- HP ZBook Power 15 G8 Mobile Workstation i7-11850H 32GB 1000GB Nvidia RTX A2000
Állásajánlatok
Cég: NetGo.hu Kft.
Város: Gödöllő
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest