login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Class in een class gebruiken

Offline Rens - 22/08/2006 15:08
Avatar van RensGouden medaille

Crew algemeen
Hoi,

Ik was bezig met een FormClass, en wou daarbij gebruik maken van TemplatePower.
Nu had ik de volgende code:
  1. <?PHP
  2. class Form
  3. {
  4. function form($sTemplate)
  5. {
  6. $sForm = "";
  7. include "class.TemplatePower.inc.php";
  8. $oTpl = new TemplatePower($sTemplate);
  9. $oTpl->prepare();
  10. }
  11.  
  12. function printForm()
  13. {
  14. echo $this->sForm;
  15. echo $oTpl->printToScreen();
  16. }
  17. }
  18. ?>


Maar dat bleek niet te werken, ik krijg daarmee de volgende fout:
Citaat:
Fatal error: Call to a member function on a non-object in /home/renswingen/domains/je-website.nl/public_html/rens/FormClass/class.Form.inc.php on line 42

Dat is de volgende regel:
  1. echo $oTpl->printToScreen();

Daarna had ik er $this->oTpl->printToScreen(); van gemaakt, maar daarmee kreeg ik dezelfde fout.
En hierna had ik het met :: geprobeerd ($oTpl::printToScreen()) maar dat werkte net zo slecht.

Ik heb de beschikking tot PHP4.4.2.
Weet iemand hoe ik dit op kan lossen?

Alvast bedankt,
Rens

4 antwoorden

Gesponsorde links
Offline timmie_loots - 22/08/2006 15:16
Avatar van timmie_loots PHP gevorderde
  1. <?php
  2.  
  3. class form {
  4.  
  5. var $oTpl;
  6. var $sForm;
  7.  
  8. function form($sTemplate)
  9. {
  10.  
  11. $this->sForm = '';
  12. include "class.TemplatePower.inc.php";
  13. $this->oTpl = new TemplatePower($sTemplate);
  14. $this->oTpl->prepare();
  15. }
  16.  
  17. function printForm()
  18. {
  19.  
  20. echo $this->sForm;
  21. echo $this->oTpl->getOutputContent();
  22. }
  23. }


Zoiets?
Offline Thomas - 22/08/2006 15:17 (laatste wijziging 22/08/2006 15:18)
Avatar van Thomas Moderator $oTpl is een lokale variabele van de methode form() - daarbuiten bestaat deze niet.

Oplossing:
  1. class Form
  2. {
  3. var $oTpl;
  4.  
  5. function form($sTemplate)
  6. {
  7. $sForm = "";
  8. include "class.TemplatePower.inc.php";
  9. $this->oTpl = new TemplatePower($sTemplate);
  10. $this->oTpl->prepare();
  11. }
  12.  
  13. function printForm()
  14. {
  15. echo $this->sForm;
  16. $this->oTpl->printToScreen();
  17. }
  18. }


edit: getOutputContent is wss beter .
Offline Maarten - 22/08/2006 15:17 (laatste wijziging 22/08/2006 15:18)
Avatar van Maarten Erelid $oTpl is enkel beschikbaar in die ene functie, je moet dus in je class eerst $oTpl definieren ( var $oTpl; ) en dan in de functies TP zooi doen 

edit: zoals hierboven al een paar keer gezegd 
Offline Rens - 22/08/2006 15:18
Avatar van Rens Gouden medaille

Crew algemeen
Ah, inderdaad.
Stom dat ik daar niet aan gedacht heb:$
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.365s