Page 1 sur 1

PHP Fatal error: Uncaught Error: Class 'App\Classe\Appl' not found in C:\Users\Affin-IT\PhpstormProjects\Blog2\publics\

Posté : 15 déc. 2018, 20:23
par thirt05
Bonjour à vous,

je me permets de vous contacter car je n'arrive pas à trouver la solution à mon problème.

En fait, j'utilise entre autre les namespaces ainsi qu'un autoloader pour charger les différentes classes dont j'ai besoin.

Les classes "Autoloader" et "Appl" se trouve dans le répertoire "app\classe".

Quand je charge ma page index.php qui se trouve dans le répertoire "publics", je reçois l'erreur suivante :

<<

PHP Fatal error: Uncaught Error: Class 'App\Classe\Appl' not found in C:\Users\Affin-IT\PhpstormProjects\Blog2\publics\index.php:14
Stack trace:
#0 {main}
thrown in C:\Users\Affin-IT\PhpstormProjects\Blog2\publics\index.php on line 14

Process finished with exit code 255

>>

Il bloque sur l'instruction : Appl::getInstance();

Il n'arrive pas à trouver ma classe "Appl".

Voici le code des différentes pages :

index.php :

Code : Tout sélectionner

<?php define('ROOT', dirname(__DIR__)); use \App\Classe\Autoloader; use \App\Classe\Appl; require ROOT . '\app\classe\Autoloader.php'; Autoloader::register(); require ROOT . '\app\classe\Appl.php'; Appl::getInstance(); if (isset($_GET['p'])) { $p = $_GET['p']; } else { $p = 'home'; } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> <meta name="format-detection" content="telephone=no"> <body> <?php ob_start(); if ($p === 'home') { echo require ROOT . '\pages\posts\home.php'; } elseif ($p === 'posts.category') { require ROOT . '\pages\posts\hcategory.php'; } elseif ($p === 'posts.show') { require ROOT . '\pages\posts\hshow.php'; } $content = ob_get_clean(); require ROOT . '\pages\templates\default.php'; ?> </body> </html>
Autoloader.php :

Code : Tout sélectionner

<?php namespace App\Classe; class Autoloader { static function register() { spl_autoload_register(array(__CLASS__, 'autoload')); } static function autoload($class_name) { if (strpos($class_name, __NAMESPACE__ . '\\') === 0) { $class_name = str_replace(__NAMESPACE__ . '\\', '', $class_name); // Remplacer les anti-slashes par des slashes si je travaille sous UNIX //$class_name = str_replace('\\', '/', $class_name); require '..\\app\\classe\\' . $class_name . '.php'; } } } ?>
Appl.php :

Code : Tout sélectionner

<? namespace App\Classe; use Core\Config; use Core\Database\MysqlDatabase; class Appl { public $title = "Mon Super Site"; private $db_instance; private static $_instance; public static function getInstance() { if (is_null(self::$_instance)) self::$_instance = new Appl(); return self::$_instance; } public static function load() { session_start(); require ROOT . '\app\Autoloader.php'; App\Autoloader::register(); require ROOT . '\core\Autoloader.php'; Core\Autoloader::register(); } public function getTable($name) { $classe_name = '\\App\\Classe\\Table\\' . ucfirst($name) . 'Table'; return new $class_name($this->getDb()); } public function getDb() { $config = Config::getInstance(ROOT . '\core\config\config.php'); if (is_null($this->db_instance)) { $this->db_instance = new Database\MysqlDatabase( $config->get('db_name'), $config->get('db_user'), $config->get('db_password'), $config->get('db_host') ); } return $this->db_instance; } } ?>
Avez-vous une idée du problème ?

Merci d'avance

Bonne soirée
Thierry

Re: PHP Fatal error: Uncaught Error: Class 'App\Classe\Appl' not found in C:\Users\Affin-IT\PhpstormProjects\Blog2\publ

Posté : 16 déc. 2018, 22:59
par Saian
Salut, peut être à cause de la balise ouvrante php (<? au lieu de <?php) dans le fichier Appl.php ? je parie que le code du fichier est affiché dans le code source de la page générée.

Re: PHP Fatal error: Uncaught Error: Class 'App\Classe\Appl' not found in C:\Users\Affin-IT\PhpstormProjects\Blog2\publ

Posté : 17 déc. 2018, 10:23
par thirt05
Bonjour Saian,

tout d'abord, je tenais à vous remercier pour votre réponse à mon message.

Malheureusement, le fait de mettre <? à la place de <?php ne change rien au problème.

Encore merci pour votre aide.

Bonne journée à vous,
Thierry

Re: PHP Fatal error: Uncaught Error: Class 'App\Classe\Appl' not found in C:\Users\Affin-IT\PhpstormProjects\Blog2\publ

Posté : 17 déc. 2018, 10:37
par Saian
Bonjour c'est le contraire qu'il faudrait faire, sur le fichier Appl.php. J'ai testé chez moi et pas d'erreur.

Re: PHP Fatal error: Uncaught Error: Class 'App\Classe\Appl' not found in C:\Users\Affin-IT\PhpstormProjects\Blog2\publ

Posté : 17 déc. 2018, 13:21
par thirt05
Bonjour Saian,

merci pour votre aide, ça semblait être la raison du problème.

Cependant, j'ai un autre souci mais je suis en train d'y regarder.

Enfin, si je ne trouve pas, je sais bien que je pourrai compter sur vous. -:)

Encore merci de votre aide et bonne journée à vous,
Thierry