[PHP] Member van klasse aanroepen lukt niet*

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • imp4ct
  • Registratie: November 2003
  • Laatst online: 06-09 22:19
Ik heb een "class" gemaakt in PHP, in die class bevinden zich functions, alles nog normaal hier.
Nu roep ik in een functie een andere functie op, dat werkt goed, maar als ik die functie wat ik ervoren al eens heb aangeroepen, nog eens wil gebruiken in diezelfde functie, dan krijg ik deze error.

"Fatal error: Call to a member function on a non-object"

'k Snap het probleem niet ?? Je kan toch een functie meerdere malen aanroepen niet ??

Even in schema vorm
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class ....

function aanroep
{
 ....
}

function uitvoer
{
  ....
  voeruit(function aanroep)
  ....
  voeruit(function aanroep)
}

[ Voor 26% gewijzigd door imp4ct op 22-05-2005 22:22 ]

Bedrijf : Webtrix

Foto materiaal:
Nikon D7100 | Nikor AF-S DX 18-105mm | Nikor AF-S 50mm | Nikon SB600


Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
Ja het is zeer normaal dat je een functie meerdere malen kunt aanroepen, daar zijn ze voor :)

Maar post eens je echte code (de relevante stukken), want hier kunnen we weinig mee.

"Call to a member function on a non-object"
Wat geeft bijvooorbeeld PHP.net of Google voor resultaten op deze error?

Die error probleert jouw te vertellen dat je een variabele als een object benanderd en dat je daarin een fucntie aanroept die PHP niet kent. Aangezien jouw variabele geen object is kun je moeilijk een functie gaan aanroepen. Grote kans is dat je je class niet goed instantieerd.

[ Voor 53% gewijzigd door Sybr_E-N op 22-05-2005 22:25 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Je hebt je variabele waarschijnlijk niet eens aangemaakt. Heb je wel ergens de volgende regel opgenomen?
PHP:
1
$variabele = new classnaam();

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • imp4ct
  • Registratie: November 2003
  • Laatst online: 06-09 22:19
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
function print_getselectedHTML($id)
  {
    $HTML = null;
    $this = "$this->" + " . $id . " + "_id";
    
    $SQL = "SELECT 
              " . $id . "_id,
              " . $id . "_text
            FROM 
              site_gscmp_" . $id . "
            ORDER BY
              " . $id . "_text ASC";
    $db = new database();
    $result = $db->execQuery($SQL);
    if(!is_null($result))
    {
      foreach ($result as $item)
      {
        $id = $item[0];
        $text = $item[1];
        if($id == " . $this . ")
        {
          $HTML .= "<option selected value=\"$id\" >$text</option>";
        }
        else
        {
          $HTML .= "<option value=\"$id\" >$text</option>";
        }
      }
    }
    return $HTML;
  }


PHP:
1
2
3
4
function print_gscmpeditHTML()
  {
    $HTML .= $this->print_getselectedHTML("ftp"); 
  }


aanroep van die functie, doe'k het 1 maal dan is't OKI, zou'k nu dit 2x onder elkaar zetten werkt het niemeer en krijg ik die error.

[ Voor 25% gewijzigd door imp4ct op 22-05-2005 22:29 ]

Bedrijf : Webtrix

Foto materiaal:
Nikon D7100 | Nikor AF-S DX 18-105mm | Nikor AF-S 50mm | Nikon SB600


Acties:
  • 0 Henk 'm!

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
-NMe- schreef op zondag 22 mei 2005 @ 22:22:
Je hebt je variabele waarschijnlijk niet eens aangemaakt. Heb je wel ergens de volgende regel opgenomen?
PHP:
1
$variabele = new classnaam();
Dan zou het geen enkele keer moeten werken. Ik heb eerder het idee dat de var naar de instance van de class wordt overschreven.

Acties:
  • 0 Henk 'm!

  • imp4ct
  • Registratie: November 2003
  • Laatst online: 06-09 22:19
-NMe- schreef op zondag 22 mei 2005 @ 22:22:
Je hebt je variabele waarschijnlijk niet eens aangemaakt. Heb je wel ergens de volgende regel opgenomen?
PHP:
1
$variabele = new classnaam();
Ik roep in een class een functie aan, die in die class zelf geschreven staat, dus ik moet die niet ergens anders gaan opvissen. Dus het lijkt me "redelijk" raar dat ik een nieuwe class ga zitten aan te maken.

[ Voor 18% gewijzigd door imp4ct op 22-05-2005 22:33 ]

Bedrijf : Webtrix

Foto materiaal:
Nikon D7100 | Nikor AF-S DX 18-105mm | Nikor AF-S 50mm | Nikon SB600


Acties:
  • 0 Henk 'm!

  • imp4ct
  • Registratie: November 2003
  • Laatst online: 06-09 22:19
OK, ik zen gewoon LOMP denk ik :p. Maar 'k heb weer iets bijgeleerd.

Het is niet slim van de variabele "$this" te gebruiken in een functie of gewoon in't algemeen in PHP, want dit is een soort "vast iets" voor PHP, weet de naam niet voor zo'n ding.

Ik heb de variabele nu gewoon naar "$line" verandert en nu werkt alles OK.
Toch bedankt voor jullie hulp !! :)

*topic can be closed*

Bedrijf : Webtrix

Foto materiaal:
Nikon D7100 | Nikor AF-S DX 18-105mm | Nikor AF-S 50mm | Nikon SB600


Acties:
  • 0 Henk 'm!

  • dingstje
  • Registratie: Augustus 2002
  • Laatst online: 02-01-2024
$this is een verwijzing naar de huidige instance van het object waarin je werkt.

If you can't beat them, try harder

Pagina: 1