I discover the PDO and I develop a blog project by following a tutorial. I am now connecting to the database after creating my Autoloader. From the moment I created my query to retrieve the results, I have the following error:
Notice: Undefined variable: class_name in /Applications/MAMP/htdocs/php/Bilal/app/Autoloader.php on line 18
Warning: require(/Applications/MAMP/htdocs/php/Bilal/app/.php): failed to open stream: No such file or directory in /Applications/MAMP/htdocs/php/Bilal/app/Autoloader.php on line 18
Fatal error: require(): Failed opening required '/Applications/MAMP/htdocs/php/Bilal/app/.php' (include_path='.:/Applications/MAMP/bin/php/php7.2.1/lib/php') in /Applications/MAMP/htdocs/php/Bilal/app/Autoloader.php on line 18
Here is my file (Autoloader.php) :
<?php
namespace App;
/**
* Class Autoloader
*/
class Autoloader{
static function register(){
spl_autoload_register(array(__CLASS__, 'autoload'));
}
static function autoload($class){
if (strpos($class, __NAMESPACE__ . '\\') === 0){
$class = str_replace(__NAMESPACE__ . '\\', '', $class);
$class = str_replace('\\', '/', $class);
require __DIR__ . '/'. $class_name . '.php';
}
}
}
And this is my file (Database.php)
<?php
namespace App;
use \PDO;
class Database{
private $db_name;
private $db_user;
private $db_pass;
private $db_host;
private $pdo;
public function __construct($db_name, $db_user = 'root', $db_pass = 'root', $db_host = 'localhost'){
$this->db_name = $db_name;
$this->db_user = $db_user;
$this->db_pass = $db_pass;
$this->db_host = $db_host;
}
/**
* Accesser for connection to database
*/
private function getPDO(){
if($this->pdo === nul){
$pdo = new PDO('mysql:host='.$this->db_host.';dbname='.$this->db_name, $this->db_user, $this->db_pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->pdo = $pdo;
}
return $this->pdo;
}
public function query($statement){
$req = $this->getPDO()->query($statement);;
// On exécute la requète avec fetchAll
$datas = $req>fetchAll(PDO::FETCH_OBJ);
return $datas;
}
}
I cannot find the issue and asking for help, please.