PHP

RainTPL em PHP

O RainTPL em PHP é um mecanismo de template fácil que permite que designers e desenvolvedores trabalhem melhor juntos, carrega um modelo HTML para separar a apresentação da lógica.

Para utilizar o RainTPL em seu projeto em PHP é necessário instalar a dependência através do composer acessando o github do RainTPL em https://github.com/feulf/raintpl3.

Para definir o que o Composer vai baixar como dependência do projeto, edite o arquivo .json criado, informando dentro de require:

{
   "require": {
     "rain/raintpl": ">=3.0.0"
   }
}

Para entender melhor como utilizar o composer para instalar dependências em projetos, clique aqui.

Serão criados o arquivo “composer.lock” e o diretório “vendor”.

Crie o arquivo “index.php” para incluir o autoload do composer.

Para usar um template pronto, disponível no github, clique em qualquer arquivo example-…php, copie e cole os códigos no arquivo “index.php” e edite da seguinte forma:

// include
 require_once ("vendor/autoload.php");

 // namespace
 use Rain\Tpl;

 // config
 $config = array(
    "tpl_dir"       => "tpl/",
    "cache_dir"     => "cache/"
 );

 //Passa as configurações
 Tpl::configure( $config );

 // create the Tpl object
 $tpl = new Tpl;

 // atribuição de variáveis
 $tpl->assign( "name", "Obi Wan Kenoby" );
 $tpl->assign( "version", PHP_VERSION );

 // assign an array
 $tpl->assign( "week", array( "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ) );

 // renderiza o template
 $tpl->draw( "index" );

Para mostrar o template, crie um arquivo index com a extensão desejada (que seja mais fácil para abrir) da seguinte forma:

 <!-- Será mostrado o valor da variável $name -->
 <h1>Hello! {$name}</h1>

 <p>Teste de template</p>
 <p>Versão do PHP: {$version}</p> <!-- valor da constante PHP_VERSION -->
 </div> 

Para utilizarmos o conceito do raintpl com o PHPmailer, por exemplo, precisamos antes adicionar a dependência do PHPmailer no arquivo .json criado:

{
   "require": {
   "rain/raintpl": ">=3.0.0",
   "phpmailer/phpmailer": "~6.1" <!-- dependência criada -->
   }
}

Relembrando, para entender melhor como utilizar o composer para instalar dependências em projetos, clique aqui.

Então, para enviarmos e-mails utilizando o PHPmailer com templates criados através do RainTPL, crie um arquivo, por exemplo, mail.php da seguinte forma:

 // include
 require_once ("vendor/autoload.php");

 // namespace
 use Rain\Tpl;

 // config
 $config = array(
    "tpl_dir"       => "tpl/",
    "cache_dir"     => "cache/"
 );

 //Passa as configurações
 Tpl::configure( $config );

 // create the Tpl object
 $tpl = new Tpl;

 // atribuição de variáveis
 $tpl->assign( "name", "Obi Wan Kenoby" );
 $tpl->assign( "version", PHP_VERSION );

 // assign an array
 $tpl->assign( "week", array( "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ) );

 // renderiza o template com o HTML a ser enviado por e-mail 
 $html = $tpl->draw("index", true);

 use PHPMailer\PHPMailer\PHPMailer;
 use PHPMailer\PHPMailer\SMTP;
 use PHPMailer\PHPMailer\Exception;

 //Cria uma instância do PHPmailer
 $mail = new PHPMailer;

 //Tell PHPMailer to use SMTP
 $mail->isSMTP(); 
 
 //Enable SMTP debugging
 // SMTP::DEBUG_OFF = off (for production use)
 // SMTP::DEBUG_CLIENT = client messages
 // SMTP::DEBUG_SERVER = client and server messages
 $mail->SMTPDebug = SMTP::DEBUG_SERVER;

 //Formato do debug mostrado na tela
 $mail->Debugoutput = 'html';

 //Set the hostname of the mail server
 $mail->Host = 'meuhost.com.br';
 // use
 // $mail->Host = gethostbyname('smtp.host.com');
 // if your network does not support SMTP over IPv6

 //Define o número da porta SMTP - 587 para envio SMTP TLS autenticado, também conhecido como RFC4409
 $mail->Port = 587;

 //Define o mecanismo de criptografia a ser usado - STARTTLS ou SMTPS
 $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;

 //Verifica se deve usar autenticação SMTP
 $mail->SMTPAuth = true;

 //Username to use for SMTP authentication - use full email address for gmail
 $mail->Username = 'username@gmail.com';

 //Password to use for SMTP authentication
  $mail->Password = 'yourpassword';

 //Defina de quem a mensagem deve ser enviada
 $mail->setFrom('suport@seusite.com.br', 'Suporte do site Criandobits');

 //Set an alternative reply-to address
 //$mail->addReplyTo('replyto@example.com', 'First Last');

 //Defina para quem a mensagem deve ser enviada
 $mail->addAddress('fulano@gmail.com', 'Benedito Silva Júnior');

 //Set the subject line
 $mail->Subject = 'Você precisa de ajuda?';

 //Informamos o HTML criado pelo template
 $mail->msgHTML($html);

 //Caso o leitor de e-mails não suporte HTML, somente textos
 $mail->AltBody = 'Agradecemos por entrar em contato conosco!';

 //Adiciona anexos
 //$mail->addAttachment('images/phpmailer_mini.png');

 //Envia a mensagem e verifique se há erros
 if (!$mail->send()) { //se não enviar
    echo 'Mailer Error: '. $mail->ErrorInfo;
 } else {
    echo 'Message sent!';
    //Section 2: IMAP
    //Uncomment these to save your message in the 'Sent Mail' folder.
    #if (save_mail($mail)) {
    #    echo "Message saved!";
    #}
 }

Lembrando que as informações referentes ao Host, Port, Username, Password e addAddress precisam ser válidas para que o e-mail seja enviado com sucesso.

A linha $tpl->draw( “index” ) criará o template com o conteúdo HTML que será enviado por e-mail.

DESEJA APRIMORAR SEUS CONHECIMENTOS EM PHP ORIENTADO A OBJETOS?

Então conheça o curso online que já ajudou milhares de pessoas a aprender a programar e desenvolver seus próprios projetos do ZERO.

CLIQUE NA IMAGEM ABAIXO E SAIBA MAIS:

Link do curso: https://go.hotmart.com/A18082772K

Como redirecionar páginas em PHP

Dúvidas ou sugestões? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits

Bene Silva Júnior

Bacharel em Sistemas de Informação pelo Instituto Paulista de Pesquisa e Ensino IPEP. Apaixonado por tecnologias e games do tempo da vovó!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *