Avatar billede engin10 Nybegynder
11. juni 2005 - 14:49 Der er 14 kommentarer og
2 løsninger

Få en warning når jeg kalder på en classe

Jeg får denne fejl:

""Warning: Missing argument 1 for billeder() in /customers/domain.dk/domain.dk/httpd.www/test/classes/image.class on line 4""

Her er den måde jeg kalder på den:

$billederObj      = new billeder;
$billedeudObj    = new template ('./template/billedeud.tpl');

(switch funktion)
case 'galleri':
$billedeudObj->set($billederObj->billeder("images"),'{BILLEDEUD}');    $indexObj->Set($billedeudObj->create(),'{BODY_CONTENT}');
break;

Classen jeg bruger:

<?php
class billeder
{
function billeder($images)
{
$ret="";
$dir = "./galleri/$images";
if (is_dir($dir)) {
  if ($dh = opendir($dir)) {
      while (($file = readdir($dh)) !== false) {
          if($file != "." && $file != ".." && $file[0] != '.') {
$extension=substr($file,-4);
if(($extension == ".jpg") || ($extension == ".gif") || ($extension == ".png")){
if(! is_dir($file)){
$ret.="<a href=\"./$dir/$file\"><img src=\"./$dir/$file\" width='100' height='80' border='0'></a>&nbsp;";
}}else{
if(($extension == ".mp3")){
$hj++;
$ret.="$hj. <a href=\"./$dir/$file\">$file</a><br>";}}
                   
                  }
      }
          return $ret;
      closedir($dh);
  }
}
}
}
?>
Avatar billede ztyxx Nybegynder
11. juni 2005 - 14:52 #1
kan det være dette kolon der skal være semikolon
case 'galleri':
Avatar billede ztyxx Nybegynder
11. juni 2005 - 14:53 #2
altså
case 'galleri';
istedet?
Avatar billede busschou Praktikant
11. juni 2005 - 14:53 #3
siger den ikke du mangler et argument netop fordi du kalder functionen
function billeder($images)
som kræver $images
Men du kalder den uden noget
Avatar billede busschou Praktikant
11. juni 2005 - 14:53 #4
du skal vel sige
new biller(dit_argument);
Avatar billede busschou Praktikant
11. juni 2005 - 14:55 #5
og dog det er jo længere nede du kalder den med images.. .my bad
Avatar billede engin10 Nybegynder
11. juni 2005 - 15:02 #6
Ja det er meget mærkeligt. For jeg kalder jo på den nede i min switch funktion.
$billederObj->billeder("images")
Avatar billede nielle Nybegynder
11. juni 2005 - 15:08 #7
busschou har da vist ret? Din klasse "billeder" har en constructor som tager netop et argument. Du har derimod ingen som slet ikke tager elementer.

Derfor kan du heller ikke oprette den på den måde du gør:

$billederObj = new billeder;
Avatar billede busschou Praktikant
11. juni 2005 - 15:09 #8
ok var min første tanke men kom så i tvivl fordi jeg ikke selv har arbejdet med klasser i php, men i andre sprog burde den kaldes med sit argument nemlig
Avatar billede coderdk Praktikant
11. juni 2005 - 16:54 #9
Dén klasse der bør du bare kalde som en statisk sådan:

$billeder = billeder::billeder('mappe');

Ved ikke om du kan med contructoren, men så omdøb metoden billeder() til noget andet, f.eks. hentBilleder, så ser den sådan ud:

$billeder = billeder::hentBilleder('mappe');
Avatar billede coderdk Praktikant
11. juni 2005 - 16:55 #10
For at komme tilbage til din fejl:

$billederObj      = new billeder;

Skal være:

$billederObj      = new billeder('mappe');

Din contructor forventer et argument ;P
Avatar billede engin10 Nybegynder
11. juni 2005 - 20:50 #11
Tak fordi i hjælp mig med at løse mit problem.
Jeg tror jeg giver point til coderdk hvis i andre ikke har noget imod det :)
Ellers kan vi nemt finde ud af det.
Avatar billede busschou Praktikant
11. juni 2005 - 21:57 #12
tja hvis du synes det er fair
Avatar billede nielle Nybegynder
11. juni 2005 - 22:40 #13
Ingen point til mig - men det var da 11/06-2005 14:53:09 som var det rigtige svar.
Avatar billede busschou Praktikant
12. juni 2005 - 14:54 #14
jeg smider et svar, så må spørger jo vælge :o)
Avatar billede engin10 Nybegynder
13. juni 2005 - 19:53 #15
coderdk, hvor er du? :)
Jeg venter lige lidt mere, vil ikke snyde coderdk.
Avatar billede coderdk Praktikant
23. juni 2005 - 06:07 #16
Yessir!

Som jeg skrev, sådan nogle klasser, bør kaldes statisk, altså uden "new" og med "::" :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester