Gå til innhold

OOP - kalle opp intern klasse funksjon


Anbefalte innlegg

Hvordan kaller man opp en 'function' inne i klassen, med verdier som også er 'klasselige'?

 

Jeg prøvde denne:

$var = $this->funksjonsnavn($this->var1, $this->var2);

 

men det så ut til å stoppe skriptet.

Er det nødvendig å ha funksjonen i kronologisk rekefølge og ? (har det i mitt eksempel).

Lenke til kommentar
Videoannonse
Annonse

Det du beskriver skal fungere helt greit, forutsatt at det du prøver å gjøre er å kalle opp en av klassen sine funksjoner inne i klassen selv, så jeg tror du bør se etter feilen et annet sted. Eventuelt så hadde det vært lettere å se hva som kunne vært problemetet hvis du postet hele klassen her.

 

Hva mener du med å ha funksjonen i kronologisk rekkefølge?

Lenke til kommentar
Hva mener du med å ha funksjonen i kronologisk rekkefølge?

Funksjon en() {

kall opp funksjon to();

}

 

Funksjon to() {

gjør masse rart.

}

 

Det viste seg at det var noe annet ja, jeg har to klasser som skulle kobles sammen og funksjon (2) skulle bruke den andre klassen som lå i et annet dokument. Den andre var en database klasse.

 

Så jeg inkluderte det dokumentet og lagde et objekt ut av det, men det virket ikke helt. (å bruke det objektet i klasse 2).

 

Derfor Tenkte jeg at klasse 2 skulle få en far, (Class 2 extends class1).

Og brukte som sagt $this->funksjonsnavn, istedenfor $obj->funksjonsnavn.

 

 

Feilen viste seg å være funksjonene query og fetch i db klassen, så når jeg kalte de opp, stoppet skriptet.

 

 

 

function query($query) {

 

  if ($data = mysql_query($query)) {

  return $data;

  $this->query_count++;

  }

  else {

  return false;

  }

 

  if($_GET['debug']) {

  print "<div id=\"debug\"> ".$query."</div>";

  }

}

 

function fetch($query) {

 

  if ($data = mysql_fetch_object($query)) {

  return $data;

  }

  else {

  return false;

  }

 

}

 

 

Hva er galt i de to?

Lenke til kommentar

function query($query) {

 

  if ($data = mysql_query($query)) {

  return $data;

  $this->query_count++;

  }

  else {

  return false;

  }

 

  if($_GET['debug']) {

  print "<div id=\"debug\"> ".$query."</div>";

  }

}

 

function fetch($query) {

 

  if ($data = mysql_fetch_object($query)) {

  return $data;

  }

  else {

  return false;

  }

 

}

 

 

Hva er galt i de to?

Uten å ha testet det fult ut antar jeg at return gjør at man "hopper ut" av funsjonen

Edit: bare skrev noe raskt her, bare for å illusterer det jeg mener:

<?php

function test()
{
   if (1 == 1)
   {
       return 1;
       echo "Det stemmer";
   }
   echo "Kommer dette med?";
}

echo test();
?>

Output vil være "1", hadde jeg byttet om på echo og return i if-settningen ville det blitt "Det stemmer1"

Endret av Ernie.
Lenke til kommentar

Så da blir det ;

 

function query($query) {

 

  if ($data = mysql_query($query)) {

  $return = $data;

  $this->query_count++;

  }

  else {

  $return = false;

  }

 

  if($_GET['debug']) {

  print "<div id=\"debug\"> ".$query."</div>";

  }

return $return; // på slutten

}

 

function fetch($query) {

 

  if ($data = mysql_fetch_object($query)) {

  return = $data;

  }

  else {

  return false;

  }

 

}

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...