php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.08.2006, 18:40  
Benutzer
 
Registriert seit: 29.06.2005
Beiträge: 49
nussbaum
Standard Array an Klasse übergeben

Hallo,
sollte ich ein Array gleich an die Klasse übergeben oder durch eine Funktion in der Klasse erstellen lassen? Was ist sinnvoller?

PHP-Code:
$email->mail_to = array("test1@bla.de""test2@bla.de"); 
oder:
PHP-Code:
$email->mail_to("test1@bla.de");
$email->mail_to("test2@bla.de"); 
nussbaum ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 08.08.2006, 18:47  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Immer über eine Funktion!
Flor1an ist offline  
Alt 08.08.2006, 19:25  
Benutzer
 
Registriert seit: 29.06.2005
Beiträge: 49
nussbaum
Standard

Würdest den Betreff der Nachricht auch über eine Funktion laufen lassen?

PHP-Code:
class bla 
var 
$subject;

    function 
subject($subject)
    {
        
$this->subject $subject;
    }


oder so übergeben:
PHP-Code:
$email = new email;
$email->subject "blabla"
nussbaum ist offline  
Alt 08.08.2006, 20:14  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Hi.

Es macht meistens Sinn, die Werte über Funktionen zu setzen. Das API könnte also so aussehen:
PHP-Code:
<?php

$Mail 
= new Mail;


$Mail->setSender('me@example.com');

$Mail->setRecipient('info@example.com');
// $Mail->setRecipient(array('mail1@example.com', 'mail2@example.com'));
$Mail->setBccRecipient('blind@example.com');

$Mail->setSubject('Testmail');
$Mail->setBody('blabla');

if (
$Mail->hasErrors()) die(var_dump($Mail->getErrors()));

$Mail->send();
?>
So kann die Methode Mail::setRecipient() z.B. prüfen, ob ein String oder ein Array übergeben wurde und entsprechende Mail-Header bzw. erstmal die entsprechenden Objektvariablen setzen.

Basti
Basti ist offline  
Alt 08.08.2006, 21:00  
Benutzer
 
Registriert seit: 29.06.2005
Beiträge: 49
nussbaum
Standard

Ich finde, dann macht es aber mehr sinn die Funktion nochmal aufzurufen, statt gleich ein array zu übergeben oder?

PHP-Code:
$Mail->setRecipient('info1@example.com');
$Mail->setRecipient('info2@example.com'); 
nussbaum ist offline  
Alt 08.08.2006, 21:04  
Erfahrener Benutzer
 
Registriert seit: 26.07.2006
Beiträge: 121
JumperII
Standard

Tja ... und zum besseren Verständniss sollte man die Methode addRecipient nennen

Gruß,
Jumper, the II.
JumperII ist offline  
Alt 08.08.2006, 21:07  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Kannst du halten, wie ein Dachdecker. Nur ist es oft einfacher, ein Array zuzulassen (oder auch eine komma-separierte Liste), denn mitunter liegen die Mail-Adressen z.B. als Rückgabewert eines DAO als Array vor und es wäre unschön, dann eine foreach-Schleife schreiben zu müssen, um für jeden Durchgang die Methode aufzurufen.

Basti
Basti ist offline  
Alt 08.08.2006, 22:36  
Benutzer
 
Registriert seit: 29.06.2005
Beiträge: 49
nussbaum
Standard

Ich habe das jetzt mal so gelöst. Nur wie sieht das beim richtigen Empfänger aus, wenn ich die E-Mail mit der Funktion mail() versenden möchte? Foreach Schleife (Sendet er dann die Mail nochmal an die Kopie-Empfänger?)

PHP-Code:
    /* --- Kopie-Empfänger der Nachricht setzen --- */

  //bla ...

  
function setCcRecipient($input) {

      if(
is_array($input)) {

        
$this->mail_ccrecipient $input[0];

        for(
$i 1$i count($input); $i++) {
          
$this->mail_ccrecipient .= ", " $input[$i];
        }

      } else {
        
$this->mail_ccrecipient .= ", " $input;
      }

    } 
[/php]
nussbaum ist offline  
Alt 09.08.2006, 04:25  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Hi.

Besser, du hältst die Adressen im Objekt auch als Array. Schließlich willst du die ja vielleicht noch validieren, doppelte rauslöschen oder was auch immer:
PHP-Code:
<?php
class Mail
{
    protected 
$aCcRecipients null;

    public function 
__construct(...)
    {
        
$this->aCcRecipients = array();
    }

    public function 
addCcRecipient($mRecipient null)
    {
        
$aCcRecipients array_filter((array) $mRecipientcreate_function('$s''return trim((string) $s) !== ""'));
        
$this->aCcRecipients array_merge($aCcRecipients$this->aCcRecipients);
    }

    public function 
hasErrors()
    {
        
$this->validate();
        return 
count($this->aErrors) > 0;
    }

    public function 
send()
    {
        
$this->aCcRecipients array_unique($this->aCcRecipients);
    }
}
?>
Natürlich kannst du auch aus den Adressen selbst noch ein Objekt machen, dem du eine isValid()-Methode verpasst.

Basti
Basti ist offline  
Alt 09.08.2006, 18:23  
Benutzer
 
Registriert seit: 29.06.2005
Beiträge: 49
nussbaum
Standard

Ich wollte mir in den Funktionen 'setCcRecipient' und 'setBccRecipient' gleich einen String mit den gesamten E-Mail Adressen zusammensetzen um diese später im Header einzusetzten. Natürlich macht es Sinn vorher noch zu prüfen, ob doppelte Einträge in dem Array vorhanden sind.

Nur was mache ich mit den regulären E-Mail Empfängern in der Funktion 'setRecipient'? Hier macht es ja keinen Sinn diese zu einem String zusammenzusetzen. Wie sollte ich dabei vorgehen ...? Die E-Mail in einer Foreach Schleife versenden - nur sendet er dann die E-Mail nochmals an die Kopie-Empfänger??

EDIT: Ich habe gerade gesehen, dass es wohl auch funktioniert, wenn man in der mail() Funktion mehrere Empfänger einfach mit einem Komma trennt.
nussbaum ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
Soapfault: Undefined Property Argi PHP-Fortgeschrittene 0 28.07.2008 11:17
mehrdimensionales Array in Klasse erstellen Nixwisser PHP Tipps 2007 2 01.08.2007 14:30
ARRAY: alle möglichen Kombinationen Tentacle PHP Tipps 2006 13 12.05.2006 00:18
Übersicht aus mehrdimensionalem Array erzeugen Crypi PHP-Fortgeschrittene 0 30.01.2006 13:44
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Array Formatierung PHP Tipps 2006 3 17.01.2006 19:12
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
Sortieren von Arrays mit mehr als 2 Dimensionen (Teil 2) Buhmann PHP-Fortgeschrittene 4 12.07.2005 14:03
Array wie auslesen? PHP Tipps 2005 7 07.03.2005 11:43
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31
Abfrage mit id aus anderer Tabelle suter PHP Tipps 2004-2 15 16.12.2004 14:25

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
array an klasse übergeben, php array an klasse übergeben, array einer anderen klasse übergeben php, php ein array aus einer klasse in eine andere klasse übergeben, php class array übergeben, php klasse array, mehrdimensionales array class übergeben, mailheader übergeben, foreach schleife jeder durchgang in array, public sub übergabe array, array in klasse übergeben php, php mehrdimensionales array an klasse übergeben, array in klasse übergeben

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:18 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.