Bonjour,
Je suis en train de refaire le tuto POO que j'ai trouve sur le net, pour apprendre la POO
Jusqu'à là j'avais compris ce que j'avais fait et poutquoi je l'ai fait.
Sauf que j'ai ce problème qui sur survient : Fatal error: Cannot redeclare class App...
Et je ne sais comment en venir à bout. pourtant la classe en question je ne la déclare qu'une seule fois.
En cherchant sur le net, apparemment le problème viendrait du faite que j'appelle deux fois la même classe.
Et pour être honnête avec vous je n'ai pas encore tout à fait compris le tuto, alors je le refais et après l'avoir fait je reviens dessus pour essayer de m'expliquer à moi-même pourquoi j'ai fait ceci, pourquoi j'ai fait cela.
Le problème est apparu quand j'ai crée la fonction load()
Voici le code de classe en question.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 <?php class App{ public $title = "Mon sueper site"; private $db_instance; private static $_instance; public static function getInstance(){ if (is_null(self::$_instance)) { self::$_instance = new App(); } return self::$_instance; } public function getTable($name){ $class_name = '\\App\\Table\\'.ucfirst($name).'Table'; return new $class_name($this->getDb()); } public static function load(){ session_start(); require ROOT. '/app/Autoloader.php'; App\Autoloader::register(); require ROOT. '/Core/Autoloader.php'; Core\Autoloader::register(); } public function getDb(){ $config = Config::getInstance(); if (is_null($this->db_instance)) { $this->db_instance = new Database\MysqlDatabase($config->get('db_name'),$config->get('db_user'),$config->get('db_pass'),$config->get('db_host')); } return $this->db_instance; } }
Et voici le code la page qui appelle la classe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <?php define('ROOT', dirname(__DIR__)); require ROOT.'/app/App.php'; App::load(); $app = App\App::getInstance(); $posts = $app->getTable('Posts'); var_dump($posts->all());







Répondre avec citation




Partager