login  Naam:   Wachtwoord: 
Registreer je!
 Forum

extends

Offline Ultimatum - 04/04/2007 23:30
Avatar van UltimatumPHP expert Ik heb 2 classes, mijn eerste is op een plaatje te uploaden. En met de tweede wil ik er filters op gaan uitvoeren. Nu heb ik dus dit globaal:

  1. <?php
  2. class UploadImage {
  3.  
  4. }
  5.  
  6. class Filters extends UploadImage {
  7.  
  8. }
  9. ?>


Ik roep het zo aan:
  1. <?php
  2. $images = new UploadImage($_SERVER['DOCUMENT_ROOT'] .'/PimpYourPhoto/photos');
  3. $filters = new Filters();
  4. ?>


In de constructor gebruik ik 1 argument (dir). Maar nu krijg ik dus deze fout:

Citaat:
Warning: Missing argument 1 for UploadImage::__construct(), called in D:programsxampphtdocsPimpYourPhotoincimage.class2.php on line 91 and defined in D:programsxampphtdocsPimpYourPhotoincimage.class2.php on line 10


Ik snap er niets van want ik heb hier toch een argument gegeven?
  1. <?php
  2. $images = new UploadImage($_SERVER['DOCUMENT_ROOT'] .'/PimpYourPhoto/photos');
  3. $filters = new Filters();
  4. ?>


Ik probeer nu een beetje met classes te werken en heb nog nooit met extend gewerkt, maar ik weet dus echt niet wat ik nu fout doe..

7 antwoorden

Gesponsorde links
Offline ikkedikke - 04/04/2007 23:40
Avatar van ikkedikke PHP expert waarschijnlijk wordt de constructor van UploadImage overgeërfd door Filters, omdat je in die regel geen parameter hebt staan krijg je die error.
Offline Ultimatum - 05/04/2007 06:53
Avatar van Ultimatum PHP expert Dus ik moet de parameter in Filters zetten ipv UploadImage?
Offline ArndJan - 05/04/2007 08:43 (laatste wijziging 05/04/2007 08:54)
Avatar van ArndJan PHP interesse Dat moet niet uit mogen maken maar waarom gebruik je niet een __set functie dat is veiliger dan direct in je new Object:

  1. <?php
  2. class UploadImage {
  3.  
  4. protected $m_sPath;
  5.  
  6. public function __construct()
  7. {
  8. $this->m_sPath = '';
  9. }
  10.  
  11. public function __set($pNaam, $vValue)
  12. {
  13. switch($pNaam)
  14. {
  15. case 'path':
  16. $this->m_sPath = $vValue;
  17. break;
  18. }
  19. }
  20.  
  21. }
  22.  
  23. class Filters extends UploadImage
  24. {
  25.  
  26. public function __construct()
  27. {
  28. parent::__construct();
  29. }
  30.  
  31. }
  32.  
  33. $images = new UploadImage();
  34. $images->path = $_SERVER['DOCUMENT_ROOT'] .'/PimpYourPhoto/photos';
  35. $filters = new Filters();


Ik denk dat dit wel goed moet werken en nu is $this->m_sPath ook beschikaar in de class filters.

Succes ermee! 
Offline Ultimatum - 05/04/2007 09:40
Avatar van Ultimatum PHP expert Wat bedoel je met de functie __set() dan? Ik zal die 2de constructor straks even uittesten als ik op mijn laptop kan 
Offline Button - 05/04/2007 10:19 (laatste wijziging 05/04/2007 10:23)
Avatar van Button PHP ver gevorderde http://www.php....oading.php

(volgens mij gaat die parent::__construct() al volstaan in die tweede construct om die error te vermijden)
Offline ArndJan - 05/04/2007 10:55
Avatar van ArndJan PHP interesse
Citaat:
Wat bedoel je met de functie __set() dan?


Dat is een standaart functie van PHP5 zoals __construct en dan ook de getters en setters __get en __set hiermee kun je een variabele stellen in je class. En deze kun je dan ook gebruiken in de filter omdat deze gebruikt word via een extends.


Citaat:
volgens mij gaat die parent::__construct() al volstaan in die tweede construct om die error te vermijden


Ja daar heb je gelijk ik dat komt door die extends, maar in de meeste gevallen laat ik hem staan en verwerk ik het met een error handling.

Ik denk wel dat je er nu uit moet komen!^^
Offline Ultimatum - 05/04/2007 15:02
Avatar van Ultimatum PHP expert Bedankt het werkt, moest wel in de constructor van de 2de class ook een parameter ingeven 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.217s