CruellaDeVille Skrevet 5. april 2006 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?
existemi Skrevet 6. april 2006 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.
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å