• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[PHP] Classe macht nicht das was ich möchte

Harry4711

New member
Hallo Leute,

ich weiß blöder Titel aber was besseres viel mir gerade nicht ein.

Ich versuche mir gerade eine Mail Classe zu bauen habe aber gerade ein Problem.

PHP:
class mail {

   final public function send_mail ( $empfaenger, $betreff, $text ) {
      
      mail( $empfaenger, $betreff, $text, $this->build_header );
      
   }

   final private function build_header ( $cc = array(), $bcc = array() ) {
   
      $headers   = array();
      $headers[] = "MIME-Version: 1.0";
      $headers[] = "Content-type: text/plain; charset=iso-8859-1";
      $headers[] = "From: SUD <test@standby1.de>";
      $headers[] = "X-Mailer: PHP/".phpversion();
      $headers[] = ((count($cc)>0) ? 'CC: '.join(",",$cc)."\r\n" : '');
      $headers[] = ((count($bcc)>0) ? 'CC: '.join(",",$bcc)."\r\n" : '');
      
      $header = implode("\r\n", $headers);
      
      return $header;
      
   }
}

ich komme da nicht an $header ran.

Ich bekomme immer den Fehler:

Code:
---NOTICE------------------------------------
Date: 23.11.2014 09:28:31
File: C:\xampp\htdocs\DB\classen\class_mail.php - Line: 38
Undefined property: mail::$build_header
--------------------------------------------

PHP sagt mir also das es nicht definiert sei ich dachte mit dem return bekomme ich es definiert.

Kann mir wer sagen wo mein Denkfehler ist?

Gruß
Harry4711
 
Ich versuche mir gerade eine Mail Classe zu bauen

Tue dir das nicht an irgend was auf der Basis von mail() zu bauen.
Dafür gibt es fertige Klassen die ausgetestet sind wie PHPmailer oder Swiftmailer.

Mail() ist tot, es lebe mail().

Um die Erstellung von Klassen zu üben, ist eine Mailerklasse für den Start weniger geeignet.

Wenn du wissen möchtest was du falsch gemacht hast, solltest du neben der Klasse und der Fehlermeldung
auch jenen Code posten, der den Fehler in Zeile 38 verursacht.
Eine private Methode kannst du auch nur innerhalb der Klasse aufrufen.
 
Hallo jspit,

erst mal Danke für deine Antort.

Um deine frage zu der Zeile 38 zu beantworten dort steht dieses:

PHP:
mail( $empfaenger, $betreff, $text, $this->headers );

Ich habe bei meinem ersten Post nur einige Kommentare entfernt und nur den Code gepostet.

Und das mit der Privaten Methode ist genau mein Problem an dieser Stelle wie bekomme ich an die ausgabe der Methode.

Return scheint ja so wie ich es mir vorstellte nicht zu gehen.

Ich stehe eh mit Return auf Kriegsfuss da hänge ich gerade öfters drann wenn was nicht so geht wie ich es möchte.



Gruß
Harry4711
 
Hi,

du hast build_header folgenderweise definiert:
PHP:
final private function build_header($cc = array(), $bcc = array());

Da kannst du nicht erwarten, dass dir
PHP:
$this->build_header            // Zugriff auf eine Variable in der Klasse mail
etwas ausspuckt - da versuchst du nämlich auf die Variable build_header der Klasse mail zuzugreifen.
Mit return hat das also nichts zu tun.
Es liegt daran, dass du versuchst auf eine Variable zuzugreifen, die nicht vorhanden ist.

Wenn du die Ausgabe der Funktion erwartest, musst du Klammern dahinter setzen:
PHP:
$this->build_header()         // Zugriff auf eine Funktion der Klasse mail


MfG
 
Arg Merde man bin ich Blöd.

Danke für den klaren Kopfstoss.

Man was kann man Blöd sein und daran auch noch einige Stunden mit Fehlersuche verbringen.

Vielen Dank und Gruß
Harry4711
 
Zurück
Oben