[PHP] Call to a member function on a non-object in

Pagina: 1
Acties:
  • 43 views sinds 30-01-2008

  • verytallman
  • Registratie: Augustus 2001
  • Laatst online: 29-03 17:07
Ik heb 3 bestanden, een Index.php die een waarde laat zien, en 2 klasse bestanden genaamd Engine.php en Tien.php die samen dat getal berekenen:

Index.php
code:
1
2
3
4
include_once('Engine.php');
$Engine = new Engine();

echo "Getal: ".$Engine -> getGetal();

Tien.php
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Tien {

    var $tien;
    
    function Tien () {
        $this -> setTien();
    }

    function setTien () {
        $this -> tien = 10;
    }
    
    function getTien () {
        return $this -> tien;
    }

}

Engine.php:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
include_once('Tien.php');


class Engine {


    var $tienPlusTien;

    function Engine () {
        $Tien = new Tien();
        $this -> optellen ();
    }
    
    function optellen () {
        $this -> tienPlusTien = ($Tien -> getTien() + 10);
    }
    
    function getGetal () {
        return $this -> tienPlusTien;
    }

}


Ik krijg deze foutmelding:

Fatal error: Call to a member function on a non-object in Engine.php on line 15

Line 15 is dus deze line: $this -> tienPlusTien = ($Tien -> getTien() + 10);

Natuurlijk gebruik ik dit als mijn website ofzo, maar dit principe gebruik ik wel en daar krijg ik dezelfde foutmelding.

  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 14-11-2025

JayVee

shibby++!

Kijk nog eens goed!
code:
1
$this -> tienPlusTien = ($Tien -> getTien() + 10);

$Tien wordt nergens assigned! Ik neem aan dat je dat in de constructor wilt doen...

Dit had je echt wel zelf kunnen bedenken met wat debuggen.

[ Voor 45% gewijzigd door JayVee op 25-01-2006 19:30 ]

ASCII stupid question, get a stupid ANSI!


  • Equator
  • Registratie: April 2001
  • Laatst online: 15:13

Equator

Crew Council

#whisky #barista

nevermind.. Totaal verkeer gelezen..

[ Voor 96% gewijzigd door Equator op 25-01-2006 19:32 ]


Verwijderd

Vervang $Tien door $this->tien

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 21:42
In Engine.php bestaat "$Tien = new Tien();", zoals jij die hebt gedefinieerd, alleen lokaal binnen de constructor van de class Engine. Als je graag diezelfde variabele ook in de andere functie's graag wilt bereiken moet je die variabele bovenin nog wel definieren, dmv var $Tien. Die var kun je dan weer gewoon via $this->$Tien gebruiken.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22:07

NMe

Quia Ego Sic Dico.

Lokale variabelen van de ene functie proberen te gebruiken in een andere functie gaat natuurlijk altijd fout. Dit is verder gewoon een foutje dat je met een beetje logisch denken en debuggen ook wel had moeten kunnen oplossen.

Op slot dus. :)

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

Pagina: 1

Dit topic is gesloten.