Variable indefinida: pdo, llamada a una función de miembro prepare () en nulo

Estaba siguiendo un video y comprobando dos veces todo el código y todo parece ser el mismo, pero recibo estos errores.

Errores :

Aviso: variable indefinida: pdo en QueryBuilder.php en la línea 14

Error fatal: llamada a una función miembro prepare () en nulo en QueryBuilder.php en la línea 14

QueryBuilder.php :

class QueryBuilder { protected $pdo; public function __construct($pdo) { $this->pdo = $pdo; } public function selectAll($table) { $query = $pdo->prepare("SELECT * FROM `$table`"); // --> LINE 14 execute(); return $query->fetchAll(); } } 

Connection.php :

 class Connection { public static function make() { $servername = "localhost"; $dbUsername = "root"; $dbPassword = ""; $dbName = "test"; try { $pdo = new PDO("mysql:host=$servername;dbname=$dbName", $dbUsername, $dbPassword); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); return $pdo; } catch(PDOException $e){ die($e->getMessage()); } } } 

init.php :

 require "database/Connection.php"; require "database/QueryBuilder.php"; require "app/Product.php"; $query = new QueryBuilder(Connection::make()); 

Como se indica en los comentarios, en OOP, necesita usar $this->pdo pasando la propiedad del objeto para él, en lugar de la variable $query = $pdo-> ya que lo ha construido en:

 public function __construct($pdo) { $this->pdo = $pdo; ^^^^^^^^^^ } 

Es decir:

 $query = $this->pdo->prepare