Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

laudirbispo

Classe não funciona

Recommended Posts

// Arquivo 1
<?php 
namespace admin\controls;

class report_bug 
{
    /* Pasta para salvar o arquivo de log - default = logs */
    protected $patch_log = '/logs';
    
    /* Host em que o sistema está hospedado e enviará o e-mail */
    protected $host = 'smtp.example.com.br';
    
    /* Endereço do e-mail de envio */
    protected $email_auth = 'errors_log@example.com.br';
    
    /* Senha para autenticação */
    protected $pass_auth = '********';   
    
    /* E-mail que receberá os logs. - Não altere está linha */
    protected $email_send = 'errors_log@example.com.br';
    
    /* Site name - Identificador da origem do erro */
    protected $site_name = 'Site - example.com.br';
    
    /* Página, script ou ação que gerou o erro */
    private $source_error;
    
    /* Error - Pode ser erro do sistema ou personalizado */
    private $error_message = 'Default Message';
    
    /* Tipo do erro - Desconhecido, warning, error, info */
    private $error_type;
    
    /* Data e hora do erro */
    private $error_time;
    
    public function __construct($source, $message, $type, $time)
    {
        $this->source_error = $source;
        $this->error_message = $message;
        $this->error_type = $type;
        $this->error_time = $time;
    }
    
    public function sendMail()
    {
        require_once($_SERVER['DOCUMENT_ROOT'].'/libs/PHPMailer/PHPMailerAutoload.php');
        $Email = new PHPMailer();

        $send = $Email->IsSMTP();            // set mailer to use SMTP
        $send = $Email->SMTPAuth = true;     // turn on SMTP authentication
        $send = $Email->Host     = "smtp.example.com.br";
        $send = $Email->Username = "errors_log@example.com.br";
        $send = $Email->Password = "********";
        $send = $Email->SMTPsecure = 'tls' ;

        // na classe, há a opção de idioma, setei como br
        $send = $Email->SetLanguage("br");
        // esta chamada diz que o envio será feito através da função mail do php. Você mudar para sendmail, qmail, etc
        // se quiser utilizar o programa de email do seu unix/linux para enviar o email
        //$Email->IsMail(); // ativa o envio de e-mails em HTML, se false, desativa.
        $send = $Email->IsHTML(true); 
        // responder para

        // email do remetente da mensagem
        $send = $Email->From = 'errors_log@example.com.br';
        // nome do remetente do email
        $send = $Email->FromName = 'site fácil';
        // Endereço de destino do email, ou seja, pra onde você quer que a mensagem do formulário vá?
        $send = $Email->AddAddress("errors_log@example.com.br");
        // informando no email, o assunto da mensagem
        $send = $Email->Subject = 'teste '; 
        // Define o texto da mensagem (aceita HTML)
        $send = $Email->Body .= "<p><strong>E-mail enviado pelo visitante: </strong> </p><br>";
        $send = $Email->Body .= "<p><strong>E-mail do visitante: </strong> </p><br>";
        $send = $Email->Body .= "<p><strong>Telefone do visitante: </strong> </p><br>";
        $send = $Email->Body .= "<p><strong>Mensagem do visitante: </strong><p>";
        $send = $Email->Send();
        if(!$send )  
        {
            echo 'não foi';
            echo "Erro: " .$send = $Email->ErrorInfo;
        }else{
            echo 'foi';
        }

    }
    
    
}

// Arquivo 2

<?php
require_once ($_SERVER['DOCUMENT_ROOT'].'/config/autoload.php');
$error_log = new admin\controls\report_bug($_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'], 'teste de envio de e-mail.', 'WARNING', $time);
$error_log->sendMail();

Estou começando a trabalhar com classes, tenho dificuldades de entender certas coisas.

Por exemplo: não sei o que estou fazendo de errado nessa classe, PHPMailer funciona perfeitamente fora dessa classe, mais ai dentro não funciona e nenhum erro é me retornado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Leia e entenda sobre Especificações de Namespaces, antes de Sair colando código dentro de classes


Principalmente na Regra 6


All class names MUST be referenced in a case-sensitive fashion.
\<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>

http://www.php-fig.org/psr/psr-4/

Mastigado

https://davidlima.com.br/post/php-fig-e-as-psr--parte-1/



E depois habilite os erros do PHP e PHPMailer, que com certeza saberá onde esta o erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.