CruellaDeVille Skrevet 5. april 2006 Del Skrevet 5. april 2006 Hei. Jeg forsøker å lage en email-klasse, som også kan inneholde et vedlegg. Jeg har laget en Attachment-klasse også. (php 4) I konstruktøren til Email setter jeg default-verdi for $attachment = null, slik at hvis ikke brukeren vil sende vedlegg så er det greitt... So far so good. Konstruktør: function Email($name, $from, $subj, $msg, $att=null){ global $attachment; $this->to_addess= "[email protected]"; $this->sender_name = $name; $this->from_address = $from; $this->subject = $subj; $this->msg = $msg; if($att !=null){ include_once('Attachment.php'); $this->attachment = new Attachment($att); }else{ $this->attachment = $att; } } Videre skal det sendes med en header hvis eposten ikke bare inneholder tekst. Det er her problemet kommer. I denne metoden kaller jeg på $this sin attachment og videre kall på get_mime_boundary(), som er deklarert i Attachment-klassen. Slik funksjonen står nå får jeg en unexpected T_OBJECT_OPERATOR i linje x (se pil). function msg(){ $email_message .= "This is a multi-part message in MIME format.\n\n" . "--{".$this->attachment->get_mime_boundary()."}\n" . // <- denne linjen får parser til å gråte "Content-Type:text/html; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $this->msg . "\n\n"; Jeg leste et sted at metodekall på metodekall ikke er tilgjengelig før php5 (jeg har 4.3), og at løsningen var å lage variabler av "ting". Så jeg forsøkte å skrive $attachment = $this->attachment; og så $attachment->get_mime_boundary() men da får jeg beskjed at jeg forsøker å kjøre en objekt funksjon på et ikke-objekt. Jeg forsøkte også å hente ut attachment-objektet fra Email-klassen slik: function getAttachment(){ return $this->attachment; } og bruke denne i getHeader slik: $attachment = new Attachment($this->getAttachment()); $attachment->get_mime_boundary(); Men attachment er ikke lenger en fil, men et objekt... Hvordan kan jeg løse dette? Lenke til kommentar
existemi Skrevet 6. april 2006 Del Skrevet 6. april 2006 Jeg vil anbefale enten å opprette Attachment-objektet utenfor Email-klassen. Du kan bare legge if-else testen din utenfor klassen slik at klienten oppretter objekt både for Email- og Attachment-klassen. Ellers så kan du endre koden din slik at Email er en superklasse for Attachment, og kilenten oppretter et Attachment objekt som da innholder metoder fra begge klasser i tilfeller hvor et vedlegg skal legges ved. Det er mye problemer med OBP og OOP i PHP4, da PHP4 har en veldig dårlig gjennomført støtte av dette. Det jeg aller helst vil anbefale er å oppgradere til PHP5 og sette deg inn i PHP5's nye prinsipper i henhold til OBP og OOP. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå