Le premier intérêt des espaces de nom est d'avoir des noms de classe uniques afin d'éviter les conflits.
Si je crée ma classe Config\Router dans mon projet, je ne pourrai pas l'utiliser avec ton projet car il y aura un conflit entre nos deux classes avec le même nom.
Il faut définir un seul vendor namespace dans ton fichier composer.json, par convention on utilise le nom du projet avec éventuellement le nom de l'auteur.
Si ton projet se nomme Toast (pour changer de "TEST"), tu peux utiliser :
"psr-4": {"Toast\\": "src/"}
Si tu choisis "Toast" comme vendor namespace, toutes les classes de ton projet dans le dossier src doivent être déclarée dans le namespace Toast.
Attention à la casse des dossiers (Config à la place de config, Models à la place de models, etc.)
composer.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| {
"name":"flow/test",
"description":"Projet test",
"type":"project",
"require":{
"twig/twig":"^3.0",
"symfony/yaml":"^6.0"
},
"autoload":{
"psr-4":{
"Toast\\":"src/"
}
}
} |
src/Config/Router.php
1 2 3 4 5
| <?php
namespace Toast\Config;
class Router {} |
public/index.php
1 2 3 4 5 6 7 8
| <?php
require_once '../vendor/autoload.php';
use Toast\Config\Router;
use Toast\Config\DatabaseConnection;
// ... |
Concernant la racine de ton site dans le navigateur, il faut modifier le DocumentRoot de ton virtual host Apache afin que celui-ci pointe sur le dossier public de ton projet.
Est-ce que tu as créé un nouveau virtualhost dans Wamp pour ton projet ?
Ou est-ce que tu utilises celui par défaut (les fichiers de ton projet sont dans le dossier www par défaut) ?
Partager