Gå til innhold

unexpected T_OPERATOR error


Anbefalte innlegg

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
Videoannonse
Annonse

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...