login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[OOP] error aanroep functie van object in sessie variabele

Offline Mad_Mike - 18/09/2006 13:34 (laatste wijziging 18/09/2006 13:38)
Avatar van Mad_MikePHP beginner Dit is een vereenvoudigde versie van mijn probleem:

index.php
  1. <?
  2.  
  3. if(!isset($_SESSION['objKleur']))
  4. {
  5. require_once("class_kleur.php");
  6. $_SESSION['objKleur'] = new Kleur("blauw");
  7. }
  8.  
  9. header("Location: kleur.php");
  10. ?>


class_kleur.php
  1. <?
  2. class kleur
  3. {
  4. var $kleur;
  5.  
  6. function kleur($naam)
  7. {
  8. $this->kleur = $naam;
  9. }
  10.  
  11. function getKleur()
  12. {
  13. return $this->kleur;
  14. }
  15. }
  16. ?>


kleur.php
  1. <?
  2. echo $_SESSION['objKleur']->getKleur();
  3. ?>



Deze foutmelding krijg ik, maar heb geen idee wat er fout is. Waarschijnlijks iets eenvoudigs, maar niet bij mij bekend 


Fatal error: Unknown(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition <b>kleur</b> of the object you are trying to operate on was loaded _before_ the session was started in kleur.php on line 3

4 antwoorden

Gesponsorde links
Offline Gerard - 18/09/2006 13:35 (laatste wijziging 18/09/2006 13:40)
Avatar van Gerard Ouwe rakker Het is dan ook getKleur() en niet getName().

edit
en toen had je dat al aangepast

wat is de foutmelding die je krijgt?

  1. if(!isset($_SESSION['objKleur']))
  2. {
  3. require_once("class_kleur.php");
  4. $_SESSION['objKleur'] = new Kleur("blauw");
  5. }


Laad je de class ook wel in als er al wel een kleur bestaat in de SESSION? Als dat niet zo is dan kan hij natuurlijk nooit het object herkennen.

edit 2
Precies wat ik dus al dacht, je moet natuurlijk altijd de class inladen zodat hij met het object om kan gaan.
Offline Mad_Mike - 18/09/2006 13:39 (laatste wijziging 18/09/2006 13:45)
Avatar van Mad_Mike PHP beginner Error melding erbij geplaatst, vergeten in de snelheid

edit:
Bedoelde je dit:
  1. <?
  2. require_once("class_kleur.php");
  3. echo $_SESSION['objKleur']->getKleur();
  4. ?>


ook nu krijg ik die error


edit2:
lezen is ook een vak 
  1. <?
  2. require_once("class_kleur.php");
  3. echo $_SESSION['objKleur']->getKleur();
  4. ?>

werkt! thix 
Offline Thomas - 18/09/2006 13:48
Avatar van Thomas Moderator Hm, staat session.auto_start toevallig aan (zie phpinfo())?
Dat zou voor problemen kunnen zorgen.

Je moet je classes ook definiëren voordat je session_start() aanroept.

Ook een manier is het serializen van objecten.
Offline Mad_Mike - 18/09/2006 14:09
Avatar van Mad_Mike PHP beginner
Citaat:
Je moet je classes ook definiëren voordat je session_start() aanroept.

Hiermee is het probleem opgelost ja 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.238s