Как получить идентификатор пользователя с PDO и классом

Я всегда делал процедурный php, но я хочу изменить свой способ работы (никогда не поздно изменить вредные привычки)

У меня есть 3 файла: pdo.php

<?php
try 
    {
        $engine = 'mysql';
        $host ='localhost';
        $port = '';
        $database = 'local';
        $user = 'root';
        $password = '';
        $dns = $engine.':port='.$port.';dbname='.$database.";host=".$host;

        $bdd = new PDO($dns, $user, $password);
    }

catch (Exeption $erreur)
    {
        die ('Erreur : '.$erreur->getMessage());
    }
?>

Пользователь.php

<?php

include 'pdo.php';

class User {

    private $bdd;

    private $id;
    private $firstname;
    private $lastname;
    private $email;


    public function getId(){
        return $this->id;
    }

    public function setId($id){
        $this->id = $id;
    }


    //ALL GETTER AND SETTER


    public function getUserIdByEmail($email) {

        $request = $this->bdd->prepare("select id from users where email = :email");
        $request->execute(array(
            ':email' => $email,
        ));
        return $request->fetchColumn();

    }
}

И index.php

<?php session_start (); 
include 'pdo.php';
require 'User.php';
?>

<?php if (isset($_SESSION["email"]) && isset($_SESSION["password"])) { 

    $userEmail = $_SESSION["email"];
    $userId = new User();
    $id = $userId->getUserIdByEmail($userEmail);
    echo $id;

//Rest of code

Я не понимаю, как я могу получить доступ к моему объекту в pdo.php. У меня есть разные возможности (например, включить pdo.php в класс User), но это не работает.

Можете ли вы объяснить, как я могу сделать? Спасибо


person Rocstar    schedule 15.02.2017    source источник
comment
Вы должны передать глобальную переменную $bdd в конструктор вашего пользовательского класса, чтобы установить свойство класса $bdd. Ищите внедрение зависимостей для получения дополнительной информации.   -  person jeroen    schedule 15.02.2017
comment
просто добавьте конструктор в свой пользовательский класс и установите bdd через параметр   -  person Your Common Sense    schedule 15.02.2017
comment
Как это ? -- public function __construct($bdd) { $this-›setDb($bdd); -- Спасибо за ответ   -  person Rocstar    schedule 15.02.2017