Terve!
Kumpi on parempi tapa toteuttaa pdo-yhteys: staattinen vai "normaali" yhteys, onko mitään esim. nopeuseroja?
Esimerkki:
class Controller extends PDO { private $model; public function __construct(){ try { $this->model = new Model("mysql:host=localhost;dbname=tietokanta", "kayttaja", "salasana"); } catch (PDOException $e) { die("VIRHE: " . $e->getMessage()); } } }
Vai:
Molemmat esimerkkisi ovat väärin, koska luokka periytyy PDO-luokasta ja sen ei siis kuulu sisältää enää erikseen PDO-oliota $model-muuttujassa, vaan luokka on jo itsessään PDO-olio ja sen kuuluu luoda yhteys kutsumalla metodia parent::__construct.
Edellisen lisäksi tietokantaluokan nimeäminen sanalla Controller tuntuu väärältä, joten en todellakaan tiedä, mitä edes yrität kysyä. Voin silti vastata, että staattiset muuttujat ovat lähes aina ideologisesti väärä ratkaisu eikä muuttujan sijoittelu aiheuta mitään merkitsevää nopeuseroa. Tietenkään ei pidä silti luoda useaa tietokantayhteyttä, vaan oikea ratkaisu on luoda yksi tietokantayhteys ja välittää se parametrina niille luokille tai funktioille, jotka sitä tarvitsevat.
Tajusin itsekin kysymykseni tyhmyyden.
Teen tuota projektia mvc-tyyliin putkan oppaan mukaan. Controller-luokan $model-muuttuja on Model-luokan instanssi. Tuo extends PDO tuli vahingossa tuonne, sillä oikeasti sitä ei koodissa ole. Mutta kiitos ohjeesta yhteyden muodostamiseen.
"Controller-luokan $model-muuttuja on Model-luokan instanssi."
Onko Arin takamus hellin vai Hellin takamus arin?
Aihe on jo aika vanha, joten et voi enää vastata siihen.