Avatar billede jan2001 Nybegynder
11. juli 2007 - 21:12 Der er 7 kommentarer og
1 løsning

php4, php5 og $this

Jeg har en phpfunktion:

    function Database( $serv, $user, $pass, $dbName )
    {
        $db = DB_TYPE; // thsi constant must be define somewhere
        $this = new $db( $serv, $user, $pass, $dbName );
    }
}

Som efter at have skiftet fra php4 til php5 giver mig fejl:

Cannot re-assign $this in .........

hvad er der med denne $this ? og hvordan ser alternativet ud?
Avatar billede jakobdo Ekspert
11. juli 2007 - 21:27 #1
Prøv at ret funktionen til:

function Database( $serv, $user, $pass, $dbName )
{
    $db = DB_TYPE; // thsi constant must be define somewhere
    return new $db( $serv, $user, $pass, $dbName );
}
Avatar billede bauerdata Nybegynder
11. juli 2007 - 21:38 #2
i php5 er $this et keyword som refererer til en forkomst af den classe som koden befinder sig i.
du har en
clas Personale
{
  public $navn =  'Bauer';
  private $hyre;

  function setNavn($navn)
  {
      $this->navn = $navn
  }
}

$this får en værdi nå du opretter et object af clas Personale

$ansat = new Personale();
$ansat->setNavn ( "Gummi Ged" );

den sidste sætning bruger $this i setNavn inde i objektet som reference til objectet selv.
Hvis du explicit førsøger at sætte $this  giver det ingen mening i php5
Avatar billede jan2001 Nybegynder
11. juli 2007 - 22:48 #3
Jo der skete en endring i fejlen. Nu er det en anden funktion:

    function getQuizURL( )
    {
        $this->db->doQuery( "SELECT value FROM jt_Config WHERE config='".CFG_FIELD_QUIZ_URL."' LIMIT 1" );
        $row = $this->db->nextAssoc( );
        return $row['value'];
    }

Call to undefined method: database->doquery()

Prøvede så at skifte $this ud med return og fik så en

syntax error, unexpected T_OBJECT_OPERATOR in...... for samme funktion.
Avatar billede sportie Nybegynder
11. juli 2007 - 23:28 #4
Jakobdo - vil du ikke hjælpe med ved dette spørgsmål: http://www.eksperten.dk/spm/787031

Det ville være til stor hjælp – og vil jo blive belønnet med 60 point ;)
Avatar billede jakobdo Ekspert
12. juli 2007 - 08:35 #5
Jeg tror måske du burde kode din klasse om, for det lugter lidt af problemerne vælter ind over dig, i takt med de begynder at blive rettet. :o)
Avatar billede jan2001 Nybegynder
12. juli 2007 - 12:02 #6
definer klasse.
Avatar billede bauerdata Nybegynder
12. juli 2007 - 12:25 #7
this er et keyword i php5 og må kun anvendes i clas definitioner som referce til objectet selv.

Omdøb alle dine "this" til "that" og se om det hjælper.
Avatar billede jan2001 Nybegynder
17. juli 2007 - 11:13 #8
Det er lavet til php4 og jeg kan ikke nok php til at lave det om. Jeg har prøvet at omdøbe men dette fungerer ikke. Sålænge min server også bruger php4 så virker det.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester