Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal,
Estou tentando fazer um login, usando controller, dao e model. Na controladora crio as dependencias da minha model e envio para elas. Porém quando tento acessar na model, o meu objeto dao, uma de suas dependencias, dá erro, dizendo que estou tentando acessar um não objeto.
Alguém pode me ajudar?
Controller:
private $loginModel;
private $loginDAO;
private $sessionUtil;
public function __construct(){
$this->loginDAO = new LoginDAO();
$this->sessionUtil = new SessionUtil();
$this->loginModel = new LoginModel($this->loginDAO, $this->sessionUtil);
}
public function validarLogin($email, $senha){
if($this->loginModel->validarLogin($email, $senha)){
header ("Location: ../admin/home.php");
}
return false;
}
Model:
class LoginModel {
private $loginDAO;
private $sessionUtil;
public function __contruct($loginDAO, $sessionUtil){
$this->loginDAO = $loginDAO;
$this->sessionUtil = $sessionUtil;
}
public function validarLogin($email, $senha){
//$loginDAO = new LoginDAO();
if($this->loginDAO->validarLogin($email, $senha)){
//$this->atualizarUltimoAcesso();
return true;
}
else{
return false;
}
}
DAO:
class LoginDAO {
private $sessionFactory;
public function __construct(){
/*$this->sessionFactory = new ConnectionFactory();
$this->sessionFactory->getConnection();*/
}
public function validarLogin($email, $senha){
if($email == 'teste@teste.com.br' && $senha == 'teste'){
return true;
}
else{
return false;
}
}
}
A classe DAo ainda não está pronta, vai entrar PDO.
Se eu instancio a classe DAO, dentro do metodo validarLogin da Model, funciona, mas se eu faço, como está aqui, dá erro
Não entendi.
Voce diz get e set dentro da minha classe DAO e da Model?
Eu não endenti de onde você ta pegando o email e senha, eles vem de onde?
Vem do formulario. Quando o usuario clica em logar, eu crio um objeto controller e passo os dados.
login.php
$email = htmlentities(trim($_POST["email"]));
$senha = htmlentities(trim($_POST["senha"]));
$loginController = new LoginController();
if(!$loginController->validarLogin($email, $senha)){
$msgErro = "Login e/ou senha inválidos!";
}
parece que depois que eu crio os objetos no controller e envio, na model ele não consegue recuperar como objeto, ou não recebe como tal, algo assim
Por que que quando eu faço isso que estou querendo, instanciar as dependencias no construtor da classe, não funciona?
//Controller
public function __construct(){
$this->_loginDAO = new LoginDAO();
$this->_sessionUtil = new SessionUtil();
$this->_loginModel = new LoginModel($this->_loginDAO, $this->_sessionUtil);
}
//Model
public function __contruct($loginDAO, $sessionUtil){
$this->_loginDAO = $loginDAO;
$this->_sessionUtil = $sessionUtil;
}
Mas seu eu criar os objetos fora do construtor, funciona:
//Controller
public function __construct(){
}
public function validarLogin($email, $senha){
$loginDao = new LoginDAO();
$sessionUtil = new SessionUtil();
$loginModel = new LoginModel($loginDao, $sessionUtil);
if($loginModel->validarLogin($email, $senha)){
header ("Location: ../admin/home.php");
}
return false;
}
//Model
public function __contruct($loginDAO, $sessionUtil){
}
public function validarLogin($email, $senha){
$loginDAO = new LoginDAO();
if($loginDAO->validarLogin($email, $senha)){
return true;
}
else{
return false;
}
}
Pessoal,
já tentei de tudo aqui, sinceramente não estou entendo esse erro, não sei onde estou errando, acho que setou fazendo tudo certo. No controller, eu crio meus objetos (DAO e SESSION) e envio esse objetos para a model, na hora que eu crio a mesma, agora por que quando eu vou utilizar esses objetos, dentro da model, dá erro, fala que não é um objeto?
Não sei mais o que fazer.
Alguém pode me ajudar?
Jefferson, faz o seguinte, teria como você zipar essa parte o sistema que está com problema e mandar aqui pra eu baixar e verificar melhor.
Adson,
Muito obrigado por sua ajuda e boa vontade, mas já refiz meus códigos aqui, melhorei algumas partes e está funcionando agora. Acabei de testar. Deve ter sido bobeira o erro.
Valeu mesmo.
Abraço.
Onde estão os set e get?