Gå til innhold

[LØST]Inkludere en klasse i en annen


Anbefalte innlegg

Hei.

 

Jeg er relativt ny til OOP-delen av PHP, men jeg følger meg relativt stabil i resten. Er det noen av dere som kan forklare meg hvordan jeg inkluderer en klasse i en annen?

 

Jeg bruker et bibliotek som heter xpdo til å gjøre alle spørringene mine.

 

Jeg bruker xpdo på f.eks denne måten:

$c = $xpdo-&--#62;newQuery('modResource');

 

Hvordan kan jeg gjøre slik at jeg inne i klassene mine kan gjøre f.eks:

$c = $this-&--#62;newQuery('modResource');

 

Eller er ikke dette mulig?

Evt. kan jeg skrive:

$c = $this-&--#62;xpdo-&--#62;newQuery('modResource');

... om den første løsningen ikke lar seg gjøre.

Endret av TheClown
Lenke til kommentar
Videoannonse
Annonse

Har du sett på extends og parent? http://php.net/manua...word.parent.php

Et eksempel:

<?php
class xpdo {
public function method() {
 echo 'funksjon i xpdo';
}
}
class minKlasse extends xpdo {
/** når vi kaller minKlasse **/
public function __construct() {
 parent::method();
}
}
// Echoer 'funksjon i xpdo'
new minKlasse();

 

Eventuelt hadde metoden i xpdo vært statisk kan du kalle den direkte uten noe mer:

<?php
class xpdo {
static function method() {
 echo 'funksjon i xpdo';
}
}
class minKlasse {
/** når vi kaller minKlasse **/
public function __construct() {
 xpdo::method();
}
}
// Echoer 'funksjon i xpdo'
new minKlasse();

Endret av Thomas.
Lenke til kommentar

Det er vel den siste metoden din som er den beste løsningen:

<?php
class BookCollection {

   protected $xpdo;

   public function setXpdo(Xpdo $xpdo) {
       $this->xpdo = $xpdo;
   }

   public function findAll() {
       $this->xpdo->newQuery("some statement");
   }
}

 

Dersom du ønsker å kunne kalle $this->newQuery() må du extende Xpdo.

Lenke til kommentar

Løste det på samme måte som deg Alex. Hadde vært "penest" å kunne skrive $this->newQuery, men det er ikke noe problem å skrive $this->xpdo->newQuery heller.

 

Takk så mye for hjelpa, da har jeg lært meg litt mer grunnleggende OOP.

 

Løst.

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...