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> "; }}else{ if(($extension == ".mp3")){ $hj++; $ret.="$hj. <a href=\"./$dir/$file\">$file</a><br>";}} } } return $ret; closedir($dh); } } } } ?>
Annonceindlæg fra Partnertekst
kan det være dette kolon der skal være semikolon case 'galleri':
altså case 'galleri'; istedet?
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
du skal vel sige new biller(dit_argument);
og dog det er jo længere nede du kalder den med images.. .my bad
Ja det er meget mærkeligt. For jeg kalder jo på den nede i min switch funktion. $billederObj->billeder("images")
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;
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
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');
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
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.
11. juni 2005 - 21:57
#12
tja hvis du synes det er fair
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.
12. juni 2005 - 14:54
#14
jeg smider et svar, så må spørger jo vælge :o)
13. juni 2005 - 19:53
#15
coderdk, hvor er du? :) Jeg venter lige lidt mere, vil ikke snyde coderdk.
23. juni 2005 - 06:07
#16
Yessir! Som jeg skrev, sådan nogle klasser, bør kaldes statisk, altså uden "new" og med "::" :)
Vi tilbyder markedets bedste kurser inden for webudvikling