login  Naam:   Wachtwoord: 
Registreer je!
 Forum

later uitvoer laten zien. (Opgelost)

Offline JPW120 - 20/01/2009 13:58
Avatar van JPW120HTML interesse Beste leden,

Ik ben momenteel bezig met php functies. Nu wil ik hem graag zo maken dat ik ik eerst van alles ga berekenen.
  1. <?php
  2. class gd{
  3. function start(){
  4. // doe maar iets
  5. }
  6. function doeiets(){
  7. // hier doen we nog iets
  8. }
  9. function show(){
  10. hier laten we alles pas zien
  11. }
  12. }

En dan wil hem graag zo gebuiken.
  1. include('crap.class.php');
  2. new gd;
  3. gd->start();
  4. gd->doeiets();
  5. // doe maar iets anders
  6.  
  7. gd->show();
  8. //hier pas laten zien!!

Hoe kan ik dat doen, niet alle functies zullen elke keer gebruikt worden.

Mvg JPW120

15 antwoorden

Gesponsorde links
Offline marten - 20/01/2009 14:02
Avatar van marten Beheerder Je moet goed kijken wat de uitvoer functies zijn. Zolang je geen echo of print ofzo gebruikt zal je niks op je scherm zien.
Offline JPW120 - 20/01/2009 14:05 (laatste wijziging 20/01/2009 14:13)
Avatar van JPW120 HTML interesse Dat klopt, maar ik wil het graag zo maken dat de eerste php functies alvast de afbeelding maken. dus
  1. $img = "stukje van de afbeelding"

en dat past als alles klaar is bij
  1. gd-> show();

Alle $img's verzameld (en opvolgorde blijft) en dat laat zien.
Edit: beter voorbeeld
  1. <?php
  2. class eten{
  3. function soep(){
  4. echo "Tomaten";
  5. }
  6. function hooftgerecht(){
  7. echo "Brocolie";
  8. }
  9. //enzo.

Zo gebruikt kan worden.
  1. include('eten.class.php');
  2. new eten;
  3. gd->soep();
  4. gd->hooftgerecht();
  5.  
  6. gd->show();
  7. //hier pas je menu laten zien!!
  8. // er is geen een verplicht
Offline Wim - 20/01/2009 14:18
Avatar van Wim Crew algemeen Een functie (zeker in een classe) iets laten echo'en lijkt me zowieso al niet slim. Je kan de output beter retourneren en deze opvangen zodat je deze in je uiteindelijke applicatie ook nog kan bewerken (qua opmaak bvb) of zodat het makkelijk te integreren valt in een template parser.

Je output kan je dan allemaal in een variabele steken, en deze op het einde pas printen.

Een andere mogelijkheid is om alle output op te vangen, en deze pas op het einde naar het scherm te spuwen. Zie hiervoor:
- PHP.net: ob_start
- PHP.net: ob_get_contents
- PHP.net: ob_end_clean
Offline JPW120 - 20/01/2009 14:23
Avatar van JPW120 HTML interesse Bedankt voor uw reactie wimmarien, maar hoe krijg ik dat dan in die functies. Bij start ob_start zetten en bij show ob_end_clean? 
Offline KeesHak - 20/01/2009 14:45 (laatste wijziging 20/01/2009 14:46)
Avatar van KeesHak Nieuw lid Bedoel je misschien zoiets:

  1. <?php
  2.  
  3. class gd{
  4. var $image;
  5.  
  6. function __construct (){
  7. $this->doeIets ();
  8. $this->doeNogIets ();
  9. }
  10.  
  11. function doeIets (){
  12. // doe iets met $this->image
  13. }
  14.  
  15. function doeNogiets (){
  16. // doe nog iets met $this->image
  17. }
  18. }
  19.  
  20. // maak nieuw plaatje
  21. $gd = new gd ();
  22.  
  23. // print plaatje
  24. print $gd->image;
  25.  
  26. ?>
Offline Wim - 20/01/2009 14:47
Avatar van Wim Crew algemeen bovenaan ergens (evt in je construct als je deze manier in een classe wil gebruiken) ja. Vervolgens zet je in je show zoiets:
$content = ob_get_contents(); gevolgd door een ob_end_clean().

Je kan ook eens naar mijn caching-classe kijken waar dit ook gebruikt wordt:
http://www.site...mp;id=1312
Offline JPW120 - 20/01/2009 14:56
Avatar van JPW120 HTML interesse @keeshak nee zo iets bedoel ik niet   ik wil graag dat elke function iets bijschrijft aan $image volgens mij kan dat niet met die class van jou maar correct me if I'am wrong

@wimmerien, die class van jou is volges mij meer voor volledige pagina's toch?
Offline KeesHak - 20/01/2009 15:14 (laatste wijziging 20/01/2009 15:15)
Avatar van KeesHak Nieuw lid Jawel hoor dat kan, check het kleine sommetje:

  1. <?php
  2.  
  3. class test{
  4. var $result = 2;
  5.  
  6. function __construct (){
  7. $this->doeIets ();
  8. $this->doeNogIets ();
  9. }
  10.  
  11. function doeIets (){
  12. $this->result = $this->result * 5;
  13. }
  14.  
  15. function doeNogIets (){
  16. $this->result = $this->result - 4;
  17. }
  18. }
  19.  
  20. // maak nieuwe test
  21. $test = new test ();
  22.  
  23. // print result
  24. print $test->result; // 6
  25.  
  26. ?>


Maar uit je reactie neem ik aan dat dit niet je probleem oplost. Misschien snap ik zelf niet helemaal wat de bedoeling is 

Bedoel je misschien dat elke keer als je een instantie maakt van de class hij dan een stukje aan het plaatje moet toevoegen?
Offline Wim - 20/01/2009 15:15
Avatar van Wim Crew algemeen
JPW120 schreef:
@wimmerien, die class van jou is volges mij meer voor volledige pagina's toch?


het is dan ook niet de bedoeling dat je ze rechtstreeks kopiert want ze zal niet de gewenste werking geven. De bedoeling was dat je een voorbeeld zou hebben van hoe die functies werken
Offline JPW120 - 20/01/2009 15:22 (laatste wijziging 20/01/2009 15:25)
Avatar van JPW120 HTML interesse Uum dat van jou was wel wat ik bedoel ook al snap je niet wat ik bedoel  . Het is zelfs geweldig.
Maar het ik ben een image class aan het maken. En eerste moet je de header maken dan Imagecreate van af dat moment moet je kunnen doen wat je wil, tot het einde dan moet je
  1. imagepng($img);
  2. imagedestroy($img);

Vervolgens wil ik dat je het afbeelding berekenen, (de eerder genoemde functies) iets anders kan doen bijv. echo 'hier is de afbeelding';
en pas bij $gd->show mag hij de afbeelding laten zien.
Btw, het werkt wel hoor maar kan je wel zomaar $test->result wel zomaar oproepen zonder de function aan te roepen?

@ wimmerien oke ik zal je class nog goed doornemen je hebt er altijd aan. 
Offline KeesHak - 20/01/2009 15:34 (laatste wijziging 20/01/2009 15:36)
Avatar van KeesHak Nieuw lid Je kan $test->result altijd aanroepen mits je een instantie ($test = new test ();) van je class hebt. Ook al heb je nog geen functies uitgevoerd.

Als je de __construct () weghaalt zul je zien dat er een 2 wordt geprint. De standaard waarde dus van $test->result. 

Succes!

ps: Waar zijn de vorige reacties gebleven?
Offline Ontani - 20/01/2009 15:40
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
Op de vorige pagina...
Offline KeesHak - 20/01/2009 15:46
Avatar van KeesHak Nieuw lid
Ontani schreef:
Op de vorige pagina...


ik heb niks gezegd 
Offline Wim - 20/01/2009 16:02
Avatar van Wim Crew algemeen I lol'ed
Offline JPW120 - 20/01/2009 16:11 (laatste wijziging 20/01/2009 16:11)
Avatar van JPW120 HTML interesse Bedankt voor jullie reacties volgens mij is dit topic opgelost.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.306s