Jeg har nedenstående kode, og den udskriver ganske fint (ved hjælp af min echo-linje). Men når jeg til sidst i mit dokument(ikke i klassen) vælger at skrive: "print_r($error->error)", så kommer der intet. Nogle der har en idé til hvorofr dette kan ske?
public function notify( $message, $level = 1 ) { echo "$message<br>"; $this->error[] = array("message" => $message, "level" => $level); }
Ved godt jeg bruger funktionen forkert, men det virkede på den måde. Det var alligevel ikke min hensigt at bruge print_r når jeg endelig fik det til at virke, men ellers tak ;)
For det første, så hjælper det underligt nok heller ikke :S
Men der SKAL jo også stå $this->error[], da funktionen ikke kun bliver kørt igennem 1 gang. Der skal tilføjes nye pladser i mit array hver gang funktionen køres igennem.
Ahh. Har fundet fejlen. Jeg tilgår kun notify() igennem andre klasser, hvilke ser ud som nedenstående. Det kan den åbenbart ikke forstå at gemme i et array, når de kommer igennem en klasse på den måde, men fint nok hvis jeg fx. skriver: **$error->notify( "test" ); echo $error->getErrors();**. Hvordan skal det så gøres?
class MySQL extends Error { function __construct($username, $password) { if(...) { $this->notify("der skete noget"); } } }
Du bør kun har een instans af din klase MySql, og så bruger du den. I og med MySQL nedarver fra Error, så kan jeg ikke se nogen grund til at oprette et specielt Error-objekt.
Jamen jeg har jo fortalt dig, at jeg ikke ser nogen grund til at oprette et specielt error-objekt, når mysql nedarver fra Error. Så bruger du bare dit mysql-objekt, som du så kun skal have een af. (ca. det samme som jeg skrev 08/12-2006 11:18:09)
Måden er go' nok - bevist ved det lille eksempel fra før. Hvad du gør forkert kan jeg ikke vide, og jeg gider ikke gætte mere, når jeg ikke må se din kode. Længere er den vel ikke.
erikjacobsen ->det er da overhovedet ikke bevist ved et eksempel. jeg synes jeg har gjort det klart nok, at jeg kørte min funktion i klassen Error igennem en ANDEN klasse.
Nedenstående kode virker jo heller ikke.
<?php class Error { public $error = array();
public function notify($message, $level = 1) { $this->error[] = array("message" => $message, "level" => $level); }
public function get_errors() { return "<pre>" . print_r($this->error, true) . "</pre>"; } }
class NyKlasse extends Error { public function test( $i = 0 ) { if( $i < 5 ) { $this->notify( "i er mindre end 5" ); } } } $error = new Error(); $ny = new NyKlasse();
$error->notify("hejsa"); $ny->test(4);
print $error->get_errors(); ?> __ er ked af hvis jeg ikke har sagt det klart nok ;) det irriterer mig virkelig, at jeg ikke kan få det til at virke
NÅÅÅÅÅRH. undskyld! var slet ikke klar over den måde extends blev brugt på. Det må i undskylde, at jeg ikke lige fik fat i, hehe.
Jeg var bare helt sikker på, at det ville virke sådan, at get_errors() i min Error-klasse ville gemme alle fejlene. Tænkte ikke over, at den lavede hele denne funktion igen i den klasse jeg har brugt extends i (men kan selvfølgelig godt se logikken nu).
Hvordan skal jeg så gøre hvis jeg godt vil have, at alle mine fejl gemmes i "$error->get_errors()" - og ikke at jeg skal skrive $variablen_for_den_klasse_jeg_vil_hente_fejl_fra->get_errors()????
Synes godt om
Ny brugerNybegynder
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.