Bonsoir,
J'essaie de manipuler les namespaces et/ou l'autoload.
J'ai 3 dossiers imbriqués avec des classes à l'intérieur
A contient B et index.php
B contient C et la classe Point.php
C contient la classe Triangle.php
J'essaie dans un premier temps, d'utiliser un namespace pour chaque classe appartenant à un dossier.
index.php
Point.php
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 <?php namespace A; use \B\Point; use \C\Triangle; include '.\B\Point.php'; include '.\B\C\Triangle.php'; //spl_autoload_extensions(".php,.inc"); //spl_autoload_register(); /*spl_autoload_register(function($class) { include 'A/B/C/' .$class . '.class.php'; });*/ $p = new Point(5, 11); echo $p->getX(); $t = new Triangle(1,1,2,2,2,1); var_dump($t); ?>
Triangle.php
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 <?php namespace B; class Point { private $x; private $y; public function __construct($x, $y) { $this->setX($x); $this->setY($y); } public function setX($x) { $this->x = $x; } public function getX() { return $this->x; } public function setY($y) { $this->y = $y; } public function getY() { return $this->y; } } ?>
J'ai ceci comme erreur jusqu'à maintenant
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 <?php namespace C; use B\C\Point; class Triangle { private $pt = []; public function __construct($x1, $y1, $x2, $y2, $x3, $y3) { $this->pt[] = new Point($x1, $y1); $this->pt[] = new Point($x2, $y2); $this->pt[] = new Point($x3, $y3); } //... } ?>
Je suppose que je dois utiliser new \B\Point($x1, $y1);.
Mais après avoir passé la soirée là-dessus, je n'arrive à rien.
N'y a t'il pas moyen de n'utiliser que l'autoload, pour charger les classes qui sont appelées dans index.php? Donc sans utiliser de namespace ?
Mon but final étant de corriger les différents scripts afin que index.php s'exécute sans erreur.
Partager