Bonjour,
Je viens tout juste de commencer à suivre, sur youtube, le tutoriel "Mise en pratique de la POO" de Grafikart et les ennuis commencent déjà.
J'ai suivi les indications données dans la deuxième vidéo intitulée "structure du projet" et malgré cela lorsque je lance le test AppTest je reçois constamment une erreur "Error : Class Framework\App not found".
Ci dessous mon fichier AppTest.php qui se trouve dans le dossier tests\Framework et qui pose souci.
namespace Tests\Framework;
use Framework\App;
use PHPUnit\Framework\TestCase;
class AppTest extends TestCase{
public function test_redirect_trailing_slash(){
$app = new App();
$_SERVER['REQUEST_URI'] = '/vndfnevf/';
$app->run();
$this->assertContains('Location: /vndfnevf', headers_list());
}
}
Ci dessous mon fichier App.php qui se trouve dans le dossier src\Framework.
namespace Framework;
class App{
public function run()
{
// ex: On récupère l'url d'un site via une varible globale
$uri = $_SERVER['REQUEST_URI'];
// Si le dernier caractère de la chaine n'est pas vide et correspond à un /
// $uri[-1] = le dernier caractère de la chaine
if(!empty($uri) && $uri[-1] === "/"){
//Je redirige vers la chaine en omettant le /
header('Location: ' . substr($uri, 0, -1));
// J'indique que la redirection est permanente
header('HTTP/1.1 301 Moved Permanently');
exit();
}
}
}
Ci dessous mon composer.json
{
"name": "mickael/framework",
"authors": [
{
"name": "Mickael",
"email": "mon mail"
}
],
"autoload": {
"psr-4": {
"Framework\\": "src/Framework"
}
},
"require-dev": {
"phpunit/phpunit": "^9.5"
}
}
J'essaye de comprendre pourquoi il me renvoie cette erreyr et qu'il ne trouve pas ma classe App.
Merci d'avance à qui pourra m'aider à y voir plus clair.
Bonjour,
Problème résolu.
Merci pour ton aide Curvata.
Salut,
est-ce que tu as fait un composer dump-autoload
après la modification de ton fichier composer ?
Si ton composer est ok vérifie bien les namespaces, les noms des fichiers et des dossiers,..
Au niveau de mon architecture de fichier tout est correct. Les noms des fichiers et des dossiers ne comportent pas d'erreurs.
Petite précision : J'ai mon fichier index.php qui se tropuve dans le dossier Public qui lui aussi fait appel à la classe App en indiquant le "use Framework\App;" et cela n'a pas l'air de poser de problème.
Pour le savoir j'ai ajouté un echo 'Bonjour'; dans ma fonction run qui est appelé dans l'index et elle l'affiche bien.
Rajoutes ceci
"Tests\\" : "tests"
dans ton composer et ensuite tu fais un composer dump-autoload
Merci encore pour ton retour.
J'ai fait le test avec "Tests\" : "tests" et "Tests\" : "tests/Framework" en faisant à chaque fois un composer dump-autoload et un composer update
mais cela ne résoud toujours pas le problème.