[resolu] php objet: $this-> est vide

Mammouth du PHP | 790 Messages

30 juin 2012, 13:59

Salut a tous, je commence la programation objet avec une simple classe de connections pour comprendre le principe...
je rencontre un soucis, a 1er vu et si je comprend bien: Fatal error: Cannot access empty property in C...
$this-> ne peut jamais etre vide en php, mon soucis est que j'ai (private $password = '';) qui est forcement vide car je suis en local...
est ce que je me trompe ? ya t'il une solution ?

ma classe:
<?php

Class DB {

    private $host = 'localhost';
    private $username = 'root';
    private $password = '';
    private $database = 'bdd';
    private $db;

    public function __construct($host = null, $database = null, $username = null, $password = null) {
        if ($host != null) {
            $this->host = $host;
            $this->username = $username;
            $this->password = $password;
            $this->database = $database;
        }
        try {


            $this->db = new PDO('mysql:host=' . $this->host . ';dbname=' . $this->database, $this->username, $this->password,
                            array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8', PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING
                    ));
        } catch (PDOException $e) {
            die('<h1>Impossible de se connecter a la base de donnees !</h1>');
        }
    }

    public function query($sql) {
        $req = $this->$db->prepare($sql);
        $req->execute();
        return $req->fetchAll(PDO::FETCH_OBJ);
    }

}

?>
mon index:
<?php 
require 'dbClass.php';
$DB = new DB();

var_dump($DB->query('SELECT * FROM table'));
?>

<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <div>contenu</div>
    </body>
</html>
au cas ou je me trompe...
Modifié en dernier par juliette le 30 juin 2012, 20:53, modifié 1 fois.
Les fautes de grammaire et d'orthographe contenu dans mes postes sont sous copyright, vous pouvez les utiliser pour un usage personnelle mais vous ne devrez en aucun cas les utiliser a des fins commercial sans une autorisation écrite de ma part.

Mammouth du PHP | 790 Messages

30 juin 2012, 14:01

a savoir que var_dump de $DB retourne:
object(DB)[1]
  private 'host' => string 'localhost' (length=9)
  private 'username' => string 'root' (length=4)
  private 'password' => string '' (length=0)
  private 'database' => string 'bdd' (length=9)
  private 'db' => 
    object(PDO)[2]
Les fautes de grammaire et d'orthographe contenu dans mes postes sont sous copyright, vous pouvez les utiliser pour un usage personnelle mais vous ne devrez en aucun cas les utiliser a des fins commercial sans une autorisation écrite de ma part.

Mammouth du PHP | 790 Messages

30 juin 2012, 14:18

resolu
public function query($sql) {
        $req = $this->$db->prepare($sql);
        $req->execute();
        return $req->fetchAll(PDO::FETCH_OBJ);
    }
dans cette fonction j'ai un $ en trop devant bd j'ai pas encore trop bien saisie le principe...
Les fautes de grammaire et d'orthographe contenu dans mes postes sont sous copyright, vous pouvez les utiliser pour un usage personnelle mais vous ne devrez en aucun cas les utiliser a des fins commercial sans une autorisation écrite de ma part.

ViPHP
ViPHP | 2577 Messages

30 juin 2012, 14:26

PDO::ERRMODE_EXCEPTION aussi si tu veux gérer des exceptions

Mammouth du PHP | 790 Messages

30 juin 2012, 15:20

désolé Mazarini, je ne comprend pas ce que tu veux dire ???
tu parle du try{ } ou de la fonction query ?
Les fautes de grammaire et d'orthographe contenu dans mes postes sont sous copyright, vous pouvez les utiliser pour un usage personnelle mais vous ne devrez en aucun cas les utiliser a des fins commercial sans une autorisation écrite de ma part.

Mammouth du PHP | 790 Messages

30 juin 2012, 16:25

bon, je pense que c'est dans le try pour le constructeur...
Les fautes de grammaire et d'orthographe contenu dans mes postes sont sous copyright, vous pouvez les utiliser pour un usage personnelle mais vous ne devrez en aucun cas les utiliser a des fins commercial sans une autorisation écrite de ma part.

ViPHP
ViPHP | 2577 Messages

30 juin 2012, 18:03

Effectivement, si tu as une erreur de connexion, ca ne déclenche pas d'exception si tu ne le demandes pas.
Tu as demandé qu'un affichage de message, d'ailleurs je pensais que ton erreur venait de ca, je n'avais pas vu le $ en trop.

Edit : fais un test avec un mauvais user pour vérifier.

Mammouth du PHP | 790 Messages

30 juin 2012, 20:47

oui c'est bon, tous fonctionne bien, merci beaucoup :)
Les fautes de grammaire et d'orthographe contenu dans mes postes sont sous copyright, vous pouvez les utiliser pour un usage personnelle mais vous ne devrez en aucun cas les utiliser a des fins commercial sans une autorisation écrite de ma part.