Bonjour,
je rencontre un probleme sur le tp php poo, je cherche et j'arrive pas à trouver mon erreur :(.
Warning: require(D:\workspace\Blog\app/Database.php): failed to open stream: No such file or directory in D:\workspace\Blog\app\Autoloader.php on line 24
Fatal error: require(): Failed opening required 'D:\workspace\Blog\app/Database.php' (include_path='.;C:\php\pear') in D:\workspace\Blog\app\Autoloader.php on line 24
<?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 = '',$db_host = 'localhost'){
$this->db_name = $db_name;
$this->db_user = $db_user;
$this->db_pass = $db_pass;
$this->db_host = $db_host;
}
private function getPDO(){
if($this->pdo === null){
$pdo = new PDO('mysql:dbname=blog;host=localhost','root','');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
this->pdo = $pdo;
}
return $this->pdo;
}
public function query($statement){
$req = $this->getPDO()->query($statement);
$data = $res->fetchAll(PDO::FETCH_OBJ);
return $data;
}
}
<?php
namespace App;
/**
* Class Autoloader
* @package Tutoriel
*/
class Autoloader{
/**
* Enregistre notre autoloader
*/
static function register(){
spl_autoload_register(array(__CLASS__, 'autoload'));
}
/**
* Inclue le fichier correspondant à notre classe
* @param $class string Le nom de la classe à charger
*/
static function autoload($class){
if (strpos($class, __NAMESPACE__ . '\\') === 0){
$class = str_replace(__NAMESPACE__ . '\\', '', $class);
$class = str_replace('\\', '/', $class);
require __DIR__ . '/' . $class . '.php';
}
}
}
fait simplement un echo de __DIR__ . '/' . $class . '.php'
(dans la méthod static "autoload")
et vois ce que ça te retourne. Si le chemin n'est pas le bon, adapte le à ton arborescence.
ça me renvoie :
D:\workspace\Blog\app/Database.php
Fatal error: Class 'App\Database' not found in D:\workspace\Blog\public\index.php on line 17
<?php
require '../app/Autoloader.php';
App\Autoloader::register();
if(isset($_GET['p'])){
$p = $_GET['p'];
} else {
$p = 'home';
}
//initialisation des obj.
$db = new App\Database('blog');
ob_start();
if($p === 'home'){
require '../pages/home.php' ;
}elseif ($p === 'single'){
require '../pages/single.php' ;
}
$content = ob_get_clean();
require '../pages/templates/default.php';
enfaite je crois que c'est mon chemin http://127.0.0.1/www/Blog/public/
il trouve pas le www je pense
ah non je pense pas
c'est bon j'ai trouvé faute de frappe sur le fichier Database en datebase du coup quand je charge le nom de la classe , il trouve pas de fichier correspondant .
tu ne pouvais pas le trouver car j'etais le seul à voir larborescence :)
Oui, c'est ce que j'allais te dire, à part te donner des indices, ce genre d'erreur, il y a que toi qui peut les régler ;)