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.

7 réponses


Mikadax
Auteur
Réponse acceptée

Bonjour,

Problème résolu.

  1. J'avais un pare feu à la con qui bloquait le téléchargement de certaines dépendances.
  2. Une fois désactivé j'ai réinstallé phpunit au propre et le problème est 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 ?

Mikadax
Auteur

Bonjour,

Merci pour ton retour.
Oui je l'ai fait mais le problème persiste.

Si ton composer est ok vérifie bien les namespaces, les noms des fichiers et des dossiers,..

Mikadax
Auteur

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

Mikadax
Auteur

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.