Pozwala mieć małe pęknięcie na to :)
class Emailer
{
var $recipients = array();
var $EmailTemplate;
var $EmailContents;
public function __construct($to = false)
{
if($to !== false)
{
if(is_array($to))
{
foreach($to as $_to){ $this->recipients[$_to] = $_to; }
}else
{
$this->recipients[$to] = $to; //1 Recip
}
}
}
function SetTemplate(EmailTemplate $EmailTemplate)
{
$this->EmailTemplate = $EmailTemplate;
}
function send()
{
$this->EmailTemplate->compile();
//your email send code.
}
}
zauważy funkcji SetTemplate()
...
Herezje aa mała klasa szablon
class EmailTemplate
{
var $variables = array();
var $path_to_file= array();
function __construct($path_to_file)
{
if(!file_exists($path_to_file))
{
trigger_error('Template File not found!',E_USER_ERROR);
return;
}
$this->path_to_file = $path_to_file;
}
public function __set($key,$val)
{
$this->variables[$key] = $val
}
public function compile()
{
ob_start();
extract($this->variables);
include $this->path_to_file;
$content = ob_get_contents();
ob_end_clean();
return $content;
}
}
Oto mały przykład, nadal trzeba wykonać rdzeń skryptu, ale zapewni to dobry układ do rozpoczęcia pracy.
$emails = array(
'[email protected]',
'[email protected]'
);
$Emailer = new Emailer($emails);
//More code here
$Template = new EmailTemplate('path/to/my/email/template');
$Template->Firstname = 'Robert';
$Template->Lastname = 'Pitt';
$Template->LoginUrl= 'http://stackoverflow.com/questions/3706855/send-email-with-a-template-using-php';
//...
$Emailer->SetTemplate($Template); //Email runs the compile
$Emailer->send();
Ów naprawdę wszystko tam jest, po prostu trzeba wiedzieć jak korzystać z obiektów i jest dość prosty stamtąd, ooh i szablon będzie wyglądać trochę coś takiego:
Welcome to my site,
Dear <?php echo $Firstname ?>, You have been registered on our site.
Please visit <a href="<?php echo $LoginUrl ?>">This Link</a> to view your upvotes
Regards.
po prostu genialne! – Jeff
Dobra robota. Czy instrukcja extract w metodzie kompilacji nie musi poprzedzać instrukcji include? –
Nie trzeba wywoływać przed załadowaniem, umożliwia to zdefiniowanie zmiennych szablonu i zakresu zawartości szablonu. – RobertPitt