login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Objecten via classen doorgeven in php (Opgelost)

Offline Ultimatum - 11/02/2009 14:29 (laatste wijziging 11/02/2009 16:33)
Avatar van UltimatumPHP expert Ey, Ik heb een probleem met een project waar ik op dit moment mee bezig ben. Ik moeteen ms word 2007 document genereren via php. Dit werkt goed maar heb een nog een klein probleem. Je moet afbeeldingen kunnen toevoegen in het word document zelf en in de header en footer van het document. Ik heb het verdeeld in 3 classes, worddocument, headerfooter en image. Het werkt opzich wel maar ik moet in de class worddocument weten hoeveel afbeeldingen er nu in het document zitten en omdat ik steeds de image class opnieuw instanseer is het niet goed mogelijk om het bij te houden dus geef ik nu een paramater van het worddocument door naar de image class, maar dit is niet echt efficiënt en handig voor maar 1 counter.

Ik heb het nu zo,
  1. <?php
  2. $oImage = new Image();
  3. $oWord->addImage($oImage);
  4. ?>


nu geef ik het image object door naar het word object, dit is geen probleem, maar als ik nu een afbeelding in een header wil toevoegen word het al ingewikkelder
  1. <?php
  2. $oHeader = new HeaderFooter();
  3. $oImage = new Image();
  4. $ oHeader ->addImage($oImage);
  5. $oWord->addHeaderFooter($oHeader);
  6. ?>


Hoe kan ik dit beter doen, want nu kan ik niet in de class Image bijhouden welke afbeelding het is. Ik heb ook een object meegegeven als parameter aan image maar is niet echt efficiënt. Is er iemand die me kan helpen. Hoop dat het zo duidelijk is 

Ik zoek dus iets als een "superclass" waarmee ik makkelijk objecten kan doorgeven en makkelijk weer kan opvragen waar ik het nodig heb

4 antwoorden

Gesponsorde links
Offline Wim - 11/02/2009 18:17
Avatar van Wim Crew algemeen Daar dient een static voor!

Een static blijft overal gelijk en is niet aan een instantie gebonden! Een klein voorbeeldje om het duidelijk te maken:
  1. <?php
  2. class image
  3. {
  4. public static $aantal = 0;
  5.  
  6. public function __construct()
  7. {
  8. self::$aantal++;
  9. }
  10. }
  11.  
  12. for ($i = 0; $i<10; $i++)
  13. {
  14. $figuur = new image(); // altijd een instantie maken!
  15. echo image::$aantal.'<br />'; //onze static variabele weergeven, deze wordt in __construct steeds met 1 verhoogt
  16. }

output:
Citaat:
1
2
3
4
5
6
7
8
9
10


Hoewel ik het persoonlijk niet zeer duidelijk vindt, kan je toch hier ook eventjes een kijkje nemen: http://be2.php.net/language.oop5.static
Offline Ibrahim - 11/02/2009 18:25
Avatar van Ibrahim PHP expert Je kunt het best een register class gebruiken dat instances opslaat voor je.
Offline Wim - 11/02/2009 18:30
Avatar van Wim Crew algemeen Waarom zou je heel de instantie willen bewaren als je enkel het aantal instanties nodig hebt?
Offline Ultimatum - 11/02/2009 22:11 (laatste wijziging 12/02/2009 11:57)
Avatar van Ultimatum PHP expert bedankt Wim, wist helemaal niet dat zo kon . Zal morgen op werk even proberen, als mensen nog meer suggesties hebben dan zijn ze welkom .

Ibrahim, had gekeken naar registry class maar vond zo omslachtig voor alleen maar instanties tellen zoals Wim zegt. Bedankt voor je input in ieder geval 

Hey het werkt , nog een keer bedankt .
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.21s