Conexão PDO com singleton

5 respostas
php
G

E ae pessoal. Seguinte estou fazendo uma aplicação web em PHP e estou usando o padrão SINGLETON para pegar uma instancia única do PDO, só que por algum motivo quando pego uma instancia do PDO não estou conseguindo acessar seus métodos através da minha variável.
Alguém sabe me dizer o pq?

5 Respostas

B

Você criou uma método estático, e para acessar não pode ser através de uma instacia.

J

Exatamente como o Bruno disse, acessar um método static de uma instância não vai dar certo.

Use:
$conexao = ConexaoDB::getInstancia();

G

Ola!
É isso que tem feito e não funciona como o esperado. :frowning:
`<?php

use ConexaoDB;

class ValidadorDeLogin {

private $login;
private $senha;
private $ok;

public function valida($login, $senha) {
    $this->senha = EmbacadorDeSenha::embacaSenha($senha);
    $this->login = $login;
    $conect = ConexaoDB::getInstancia();
    //$conect-> aqui não consigo acessar o PDO
    if ($this->ok) {
        return TRUE;
    } else {
        return false;
    }
}

}`

J

Quem preenche o

$this->ok

?

Da maneira que está, fica sempre false

G

Desculpa mano eu comecei a escrever o código, e não tinha chegado nessa parte do $this->ok;
Eu meio que deixei o Singleton de lado e por enquanto e estou continuando o projeto depois volto no singleton. Mas o codigo ficou assim:

$conect = new PDO("mysql:host=localhost;dbname=dbb", "root", "123465", array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
        $stmt = $conect->prepare('SELECT * FORM usuario WHERE email = :login senha_salt = :senha');
        $stmt->execute(array('login' => $this->login, 'senha' => $this->senha));
        $row = $stmt->fetch();
        if (!empty($row)) {
            return json_encode($row);
        } else {
            return json_encode(array('error'=>403,'mensagem'=>"Email ou senha invalido!"));
        }
    }

Só queria tirar a responsabilidade de criar a conexão dessa classe e deixar para a classe ConexaoDB.
Estou apanhando muito com o PHP vim de Java.

Obrigado pelo interesse mano.

Criado 10 de abril de 2016
Ultima resposta 12 de abr. de 2016
Respostas 5
Participantes 3