Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Erro ao abrir projeto

Warning: Missing argument 2 for Vendor\DAO\PostagemDAO::__construct(), called in /home/roger/Área de Trabalho/ProjetosAlura/miniblog-master/Vendor/Controller/LoginController.php on line 21 and defined in /home/roger/Área de Trabalho/ProjetosAlura/miniblog-master/Vendor/DAO/PostagemDAO.php on line 11

Notice: Undefined variable: usuarioDao in /home/roger/Área de Trabalho/ProjetosAlura/miniblog-master/Vendor/DAO/PostagemDAO.php on line 13

Fatal error: Uncaught Error: Class 'Vendor\Controller\UsuarioValidator' not found in /home/roger/Área de Trabalho/ProjetosAlura/miniblog-master/Vendor/Controller/LoginController.php:22 Stack trace: #0 /home/roger/Área de Trabalho/ProjetosAlura/miniblog-master/index.php(23): Vendor\Controller\LoginController->__construct() #1 {main} thrown in /home/roger/Área de Trabalho/ProjetosAlura/miniblog-master/Vendor/Controller/LoginController.php on line 22

5 respostas

Opa, tudo bom Roger? Você pode passar pra gente seu UsuarioDAO e seu LoginController pra que eu possa te ajudar melhor?

valeu meu eu já tava desistindo meu vou passar sim é to começando agora achei o código um pouco mais além do meu conhecimento daí tava totalmente perdido kkk.

<?php

namespace Vendor\DAO;
use Vendor\Model\Usuario;

class UsuarioDAO{
    private $con;

    public function __construct($con){
        $this->con = $con;
    }


    public function adiciona(Usuario $usuario){        
        $query = "INSERT INTO Usuario (nome,senha,email,bio,dataDeIngresso) VALUES 
        ('".mysql_real_escape_string($usuario->getNome())."',
        '".mysql_real_escape_string(md5($usuario->getSenha()))."',
        '".mysql_real_escape_string($usuario->getEmail())."',
        '".mysql_real_escape_string($usuario->getBio())."',
        '".mysql_real_escape_string(date("Y-m-d"))."')";

        return mysql_query($query);
    }

    public function altera(Usuario $usuario){
        $query = "UPDATE Usuario SET 
        Nome='".mysql_real_escape_string($usuario->getNome())."', 
        Bio='".mysql_real_escape_string($usuario->getBio())."' 
        WHERE id='".mysql_real_escape_string($usuario->getId())."'";

        mysql_query($query);
    }

    public function buscaPorId($id){
        $query = "SELECT * FROM Usuario WHERE id = '".
                    mysql_real_escape_string($id)."'";
        $result = mysql_query($query);
        $usuario = mysql_fetch_object($result,'Vendor\Model\Usuario');
        return $usuario;
    }

    public function buscaPorNome($nome){
        $query = "SELECT * FROM Usuario WHERE nome = '".
                    mysql_real_escape_string($nome)."'";
        $result = mysql_query($query);
        $usuario = mysql_fetch_object($result,'Vendor\Model\Usuario');
        return $usuario;
    }

    public function buscaPorEmail($email){
        $query = "SELECT * FROM Usuario WHERE email = '".
                    mysql_real_escape_string($email)."'";
        $result = mysql_query($query);
        $usuario = mysql_fetch_object($result,'Vendor\Model\Usuario');
        return $usuario;
    }

    public function login($email,$senha){
        $query = "SELECT * FROM Usuario WHERE Email = '".
                    mysql_real_escape_string($email).
                    "' AND Senha = '".
                    mysql_real_escape_string(md5($senha))."'";
        $result = mysql_query($query);
        $usuario = mysql_fetch_object($result,'Vendor\Model\Usuario');
        return $usuario;
    }
}

////////////////////////// Controller////////////////////

<?php
namespace Vendor\Controller;

use Vendor\DAO\UsuarioDAO;
use Vendor\DAO\PostagemDAO;
use Vendor\Factory\ConnectionFactory;
use Vendor\Lib\View;
use Vendor\Model\Login;
use Vendor\Model\Usuario;
use Vendor\Lib\Validator;

class LoginController{
    private $usuarioDao;
    private $postagemDao;
    private $login;
    private $validator;

    public function __construct(){
        $con = ConnectionFactory::getConnection();
        $this->usuarioDao = new UsuarioDAO($con);    
        $this->postagemDao = new PostagemDAO($con);    
        $this->validator = new UsuarioValidator();
    }

    public function index(){

        $view = new View('index','Login');
        return $view;
    }

    public function login(){
        $usuario = $this->usuarioDao->login($_POST["email"], $_POST["senha"]);

        if($usuario == null) {
            $view = new View('index','Login');
            $view->viewBag('error','Usuário ou senha inválido.');
            return $view;
        } else {
            Login::logaUsuario($usuario);
            header("Location: index.php?c=Index&m=index&usuarioId=".$usuario->getId()."");
        }

    }
    public function logout(){
        Login::logout();
        header("Location: index.php");
    }

    public function register(){
        $usuario = new Usuario();
        $nome = $_POST["nome"];
        $email = $_POST["email"];
        $senha = $_POST["senha"];
        $bio = $_POST["bio"];

        $usuario->setNome($nome);
        $usuario->setEmail($email);
        $usuario->setSenha($senha);
        $usuario->setBio($bio);

        $view = new View('index','Login');

        if($this->validator->validaUsuario($usuario)){

            $usuario = $this->usuarioDao->adiciona($usuario);
            $view->viewBag('register','Usuario registrado com sucesso!');
        }
        else{
            $view->viewBag('register','nome ou email já existente');
        }
        return $view;
    }
}

Quando fiz o curso meu projeto também veio com alguns erros. Rsrs Mas, não foi difícil consertá-los não.

O FatalErrorno caso, pelo que eu me lembro do projeto, é porque não existe mesmo uma classe UsuarioValidator, e sim Validator.

Mas, ainda tem alguns erros na construção dos DAOs. Tem que conferir os parâmetros que precisam ser passados, e garantir que todos sejam, entendeu?

Abraços.

solução!

Fala Roger, tudo bom?

Pelo o que eu pude perceber você fez download do projeto pelo github, certo? Vou dar uma revisada lá para evitar este tipo de problema =)

Mas para solucionar, o Carlos está certo, precisa renomear a classe UsuarioValidator para Validator (não esquecer de renomear a declaração da classe também) e alterar algumas coisas nos DAOs. Eu respondi uma duvida semelhante aqui:

https://cursos.alura.com.br/forum/topico-erro-pagina-inicial-22968

Se você quiser, pode baixar o projeto aqui neste link:

https://github.com/alura-cursos/php7-refatorando-para-a-nova-versao/archive/aula1.zip

Que está tudo em ordem.

Qualquer dificuldade, não deixe de compartilhar com a gente aqui =)

Espero ter te ajudado.

Valeu André & Carlos VCS são demais valeu mesmo é que MVC estou me quebrando um pouco muito Obrigado mesmo valeu mesmo.