Gå til innhold

OOP og database-klasse


Anbefalte innlegg

Si at jeg har en klasse A som inneholder en samling objekter av en annen klasse B i tillegg til en databaseklasse, f.eks. PDO.

 

Da har jeg et felt i klassen A som heter $database, og som initieres med

$this->database = new PDO($vars);

 

Et eksempel kan være en klasse for en blogg (A), som inneholder en samling poster (B). Dersom jeg vil bruke databasetilkoblingen i klasse A kan jeg f.eks. gjøre

$this->database->query().

Da blir spørsmålet: hva hvis jeg har lyst til å bruke databasetilkoblingen i klasse B, f.eks. for å oppdatere en post, hvordan kan jeg gjøre dette?

 

På forhånd takk for all hjelp.

Endret av G2Petter
Lenke til kommentar
Videoannonse
Annonse
Si at jeg har en klasse A som inneholder en samling objekter av en annen klasse B i tillegg til en databaseklasse, f.eks. PDO.

 

Da har jeg et felt i klassen A som heter $database, og som initieres med

$this->database = new PDO($vars);

 

Et eksempel kan være en klasse for en blogg (A), som inneholder en samling poster (B). Dersom jeg vil bruke databasetilkoblingen i klasse A kan jeg f.eks. gjøre $this->database->query(). Da blir spørsmålet: hva hvis jeg har lyst til å bruke databasetilkoblingen i klasse B, f.eks. for å oppdatere en post, hvordan kan jeg gjøre dette?

 

På forhånd takk for all hjelp.

Hvis du vil gi klasse B databaselinken til klasse A, så kan du gjøre det i metode kallet.

$b->setDB($this->database);

$b->setPost('newtext')->updateDB(); // hvert metodekall i klasse B returnerer $this;

eller

$b->setPost('newtext')->updateDB($this->database); // hvert metodekall i klasse B returnerer $this;

eller

$b = $this->getPost($id);

$b->setPost('newtext');

$this->updatePosts(); //oppdaterer bare endrede poster

eller når du lager klasse B

$this->addPost('name', 'text'); //setter db link automagisk

 

Men klassen kan få databasen via en singleton også, hvis du ikke bruker flere databaser.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...