Grafika publishing webtip.cz grafika.cz mujiPod.cz mujmac.cz fotografovani.cz printing.cz builder.cz galerie
webtip.cz
adresář  | práce  | diskuse  | redakce  | inzerce
 
 


  PHP v praxi, 25. díl - Třídy a e-mail s přílohou
o autorovi 
poslat mailem 
tisknout článek 
aktuální rubrika 
Na třídě pro odesílání e-mailu si tentokrát ukážeme základy objektového programování v PHP. Uvidíte, že to není tak složité, jak by se mohlo na první pohled zdát...

Veselý Jan - 29.03.2002 - tutorial - Rubrika: PHP
Předchozí díl: PHP v praxi, 24. díl - E-mail
Seriál: 
Následující díl: PHP v praxi, 26. díl - Zipujeme za pochodu

Minule jsem slíbil, že náš e-mail obdaříme přílohou. Využijeme toho však trošku jinak, než by se dalo předpokládat: na praktické ukázce si totiž ukážeme základy práce se třídami v PHP. Zejména pro začátečníky to nebude příliš snadné, ale uvidíte, že se to vážně pochopit dá. Na Internetu je k sehnání mnoho skriptů pod GPL licencí, není tedy rozumné ztrácet čas s programováním něčeho, co už za nás udělali jiní a lépe. Dnes využijeme právě třídu, jež má za úkol odesílání elektronické pošty a hodí se k vysvětlení objektového programování.

Co tedy budete potřebovat? Ze stránek projektu PHPMailer http://phpmailer.sourceforge.net/ si stáhnout dotyčný skript (zde verze 1.50). Bude nám z toho celého balíčku však stačit jen jeden soubor: "class.phpmailer.php". Dále se podívat na práci se třídami na stránkách PHP manuálu (dokonce v češtině!) http://www.php.cz/manual/cs/ref.classobj.php. Samozřejmostí je správná konfigurace PHP podle předchozího dílu, abyste mohli výsledný e-mail odeslat.

Objektové programování vzbuzuje u neprogramátorů pocit tajemna, přitom je to (alespoň co se týče toho základu, který potřebujeme pro stránky) celkem snadná věc. Třída (nebo objekt) lze dobře vysvětlit na konkrétních předmětech z našeho okolí. Tak třeba auto - tento pojem je třída: předpokládáme, že auto má čtyři kola, má nějakou barvu a jezdí. No a teď přejdeme ke konkrétnímu autu: vytvoříme jeho tzv. instanci, reálný předmět. Čtyři kola má každé, to je předdefinovaná vlastnost samotné třídy. Barvu mu přiřadíme červenou, to je individuální vlastnost právě této nově vytvořené instance. S touto instancí následně pojedeme do jiného města.

Když zůstaneme u zeleninového příkladu z manuálu:

class Zelenina {
var $jedla; var $barva; function Zelenina( $jedla) { $this->jedla = $jedla; } function je_jedla() { return $this->jedla; } function jaka_barva() { return $this->barva; } }
$zel = new Zelenina (true); $zel->barva="cervena"; echo $zel -> je_jedla(); echo $zel -> jaka_barva();

Třída Zelenina pracuje s proměnnými $jedla a $barva. To jsou tzv. členské proměnné, inicializované na začátku pomocí var (zkratka pro variable). Pak následují jednotlivé funkce (zde se nazývají metody) - Zelenina(), je_jedla() a jaka_barva(). Hlavní metoda, Zelenina(), je konstruktor, jenž vytvoří novou instanci tohoto objektu. Všimněte si jak - použije se jako funkce s parametry, jen se před ní napíše "new". Proměnná $zel tedy zastupuje instanci třídy Zelenina s nutným parametrem (zde true).

Parametry se v konstruktoru zpracují poněkud divně vypadajícím způsobem $this->jedla = $jedla. $this zastupuje dotyčnou třídu, ve které se právě pohybujeme, šipka volá metodu nebo proměnnou v této třídě. Zde pozor: voláme tímto členskou proměnnou, obyčejná proměnná je $barva. O členských proměnných se dá říci to, že se chovají jako globální proměnné v rámci jedné třídy. Proto k nim můžeme přistupovat v metodách je_jedla() nebo jaka_barva(). Opět ale jen přes volání $this->proměnná (bez dolaru). Platí, že v rámci třídy nemůže být nic volně, vše musí být v metodách, jinak se k tomu nedostanete. Volání se provádí přes šipku "->", přistupujeme tím k proměnným a metodám uvnitř konkrétní třídy. Např. barvu přiřadíme dotyčné instanci jednoduchým způsobem $zel->barva="cervena";

V praxi si ukážeme práci se třídou PHPMailer. Zmiňovaný soubor class.phpmailer.php umístěte do jednoho adresáře s prázdným souborem phpmail.php a jedním obrázkem podle vašeho výběru. Do prázdného souboru přijde následující kód:

require("class.phpmailer.php");

$mail = new phpmailer();

$mail->From  = "odnas@server.cz";
$mail->FromName = "jmeno";
$mail->AddAddress("cil@servr.cz","Jan Novák"); 
$mail->AddAddress("cil2@servr2.cz");          
$mail->AddReplyTo("cil3@servr3.cz","Information");

$mail->WordWrap = 50;                           
$mail->AddAttachment("obrazek.jpg");
$mail->AddAttachment("obrazek.jpg", "new.jpg"); 
$mail->IsHTML(true);         

$mail->Subject  =  "Predmet zpravy";
$mail->Body     =  "Ukazka <b>HTML</b>";
$mail->AltBody  =  "Cisty text";

if(!$mail->Send())
{
   echo "Zprava nebyla odeslana";
   exit;
}

echo "Zprava byla odeslana";

?>

Z předchozího už byste měli odvodit, že proměnná $mail obsahuje instanci třídy phpmailer. Její vlastnosti vytváří konstruktor phpmailer(). Např. $mail->From = "odnas@server.cz"; přiřadí členské proměnné $From ve třídě phpmailer konstruktoru phpmailer hodnotu mezi závorkami. Jiná věc je volání metody: $mail->AddAddress("cil@servr.cz","Jan Novák"); předá dva parametry funkci uvnitř třídy phpmailer, jejíž název je AddAddress() a má za úkol přidat do určitých polí správné informace o adrese příjemce. Tímto způsobem nastavíme celou instanci této třídy k naší spokojenosti a odešleme $mail->Send(). Její hodnota je boolean, čili buď pravda nebo nepravda. Když neuspěje, je výsledkem nepravda a vypíše se chybová hláška.

Sami si vyskoušejte práci s touto třídou. Je dobře zdokumentovaná (byť anglicky), takže se v ní tak snadno neztratíte. Rozhodně vám ale dá hodně prostoru k experimentování. Doufám, že jste alespoň z části pochopili, o čem je řeč, když se řekne "objekt". Pro další programování je to velmi důležité, neboť většina PHP skriptů funguje právě na tomto principu.

Veselý Jan


Hodnocení článku: -1- -2- -3- -4- -5-  Aktuální hodnocení: 2.64 (3572)

Relevantní články
Žádné články


Příspěvky do diskuse o aktuálním článku
peet15.01.0:14S tou přílohou to nefunguje
Igor22.01.12:54RE: S tou přílohou to nefunguje
Eddie23.02.16:20RE: S tou přílohou to nefunguje
NEKDO11.02.10:46RE: S tou přílohou to nefunguje
Michal27.03.16:31RE: RE: S tou přílohou to nefunguje
Kuba24.08.15:12RE: S tou přílohou to nefunguje
david28.08.18:36problem s Frontpage
milos horinek04.09.16:05RE: problem s Frontpage
Oizo05.05.18:45Nesmyslny znaky
Jan Vesely05.05.18:57RE: Nesmyslny znaky
Oizo07.05.6:55RE: RE: Nesmyslny znaky
Jan Veselý07.05.9:16RE: RE: RE: Nesmyslny znaky
Oizo07.05.12:01RE: RE: RE: RE: Nesmyslny znaky
jen Vesely07.05.12:09RE: RE: RE: RE: RE: Nesmyslny znaky
Ondrej19.02.7:26RE: Nesmyslny znaky
hor06.08.19:36RE: Nesmyslny znaky
Jirka12.04.22:10Email s přílohou (25. lekce)
Jan Vesely13.04.10:23RE: Email s přílohou (25. lekce)
Dragon09.09.11:59RE: Email s přílohou (25. lekce)
mrtvy.kenny09.04.17:09problem s Diskuzi (15.dil PHP)
Jan Vesely13.04.10:25RE: problem s Diskuzi (15.dil PHP)
mrtvy.kenny16.04.17:14RE: RE: problem s Diskuzi (15.dil PHP)
  

 

  O vydavateli | Kontakt | Ceník reklamy | Ochrana osobních dat
©2002 Grafika Publishing. Všechna práva vyhrazena!