Conexão PDO com singleton

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?

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

2 curtidas

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

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

1 curtida

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;
    }
}

}`

Quem preenche o

$this->ok

?

Da maneira que está, fica sempre false

1 curtida

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.